ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/value/ValueReal.java

Path
ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/value/ValueReal.java
Status
scanned
Type
file
Name
ValueReal.java
Extension
.java
Programming language
Java
Mime type
text/x-java
File type
Java source, ASCII text
Tag

      
    
Rootfs path

      
    
Size
4800 (4.7 KB)
MD5
4f3ba7a46da2aaf2eb6d013e42741864
SHA1
475b98823b2486469177c9f521ce24fdcbf9c167
SHA256
a9a6715e9b712f5828a972ac0020daa41862f65e8ab6d71b1151ca58e17a2dab
SHA512

      
    
SHA1_git
10cb29242c9fb1d3be0d2aaf3e61c99c201aad58
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
ValueReal.java | 4.7 KB |

/* * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.value; import java.math.BigDecimal; import org.h2.api.ErrorCode; import org.h2.engine.CastDataProvider; import org.h2.message.DbException; /** * Implementation of the REAL data type. */ public final class ValueReal extends Value { /** * The precision in bits. */ static final int PRECISION = 24; /** * The approximate precision in decimal digits. */ static final int DECIMAL_PRECISION = 7; /** * The maximum display size of a REAL. * Example: -1.12345676E-20 */ static final int DISPLAY_SIZE = 15; /** * Float.floatToIntBits(0f). */ public static final int ZERO_BITS = 0; /** * The value 0. */ public static final ValueReal ZERO = new ValueReal(0f); /** * The value 1. */ public static final ValueReal ONE = new ValueReal(1f); private static final ValueReal NAN = new ValueReal(Float.NaN); private final float value; private ValueReal(float value) { this.value = value; } @Override public Value add(Value v) { return get(value + ((ValueReal) v).value); } @Override public Value subtract(Value v) { return get(value - ((ValueReal) v).value); } @Override public Value negate() { return get(-value); } @Override public Value multiply(Value v) { return get(value * ((ValueReal) v).value); } @Override public Value divide(Value v, TypeInfo quotientType) { ValueReal v2 = (ValueReal) v; if (v2.value == 0.0) { throw DbException.get(ErrorCode.DIVISION_BY_ZERO_1, getTraceSQL()); } return get(value / v2.value); } @Override public Value modulus(Value v) { ValueReal other = (ValueReal) v; if (other.value == 0) { throw DbException.get(ErrorCode.DIVISION_BY_ZERO_1, getTraceSQL()); } return get(value % other.value); } @Override public StringBuilder getSQL(StringBuilder builder, int sqlFlags) { if ((sqlFlags & NO_CASTS) == 0) { return getSQL(builder.append("CAST(")).append(" AS REAL)"); } return getSQL(builder); } private StringBuilder getSQL(StringBuilder builder) { if (value == Float.POSITIVE_INFINITY) { return builder.append("'Infinity'"); } else if (value == Float.NEGATIVE_INFINITY) { return builder.append("'-Infinity'"); } else if (Float.isNaN(value)) { return builder.append("'NaN'"); } else { return builder.append(value); } } @Override public TypeInfo getType() { return TypeInfo.TYPE_REAL; } @Override public int getValueType() { return REAL; } @Override public int compareTypeSafe(Value o, CompareMode mode, CastDataProvider provider) { return Float.compare(value, ((ValueReal) o).value); } @Override public int getSignum() { return value == 0 || Float.isNaN(value) ? 0 : value < 0 ? -1 : 1; } @Override public BigDecimal getBigDecimal() { if (Float.isFinite(value)) { // better rounding behavior than BigDecimal.valueOf(f) return new BigDecimal(Float.toString(value)); } // Infinite or NaN throw DbException.get(ErrorCode.DATA_CONVERSION_ERROR_1, Float.toString(value)); } @Override public float getFloat() { return value; } @Override public double getDouble() { return value; } @Override public String getString() { return Float.toString(value); } @Override public int hashCode() { /* * NaNs are normalized in get() method, so it's safe to use * floatToRawIntBits() instead of floatToIntBits() here. */ return Float.floatToRawIntBits(value); } /** * Get or create a REAL value for the given float. * * @param d the float * @return the value */ public static ValueReal get(float d) { if (d == 1.0F) { return ONE; } else if (d == 0.0F) { // -0.0 == 0.0, and we want to return 0.0 for both return ZERO; } else if (Float.isNaN(d)) { return NAN; } return (ValueReal) Value.cache(new ValueReal(d)); } @Override public boolean equals(Object other) { if (!(other instanceof ValueReal)) { return false; } return compareTypeSafe((ValueReal) other, null, null) == 0; } }
Detected license expression

      
    
Detected license expression (SPDX)

      
    
Percentage of license text
2.14
Copyrights
- end_line: 2
  copyright: Copyright 2004-2023 H2 Group. Multiple-Licensed
  start_line: 2
Holders
- holder: H2 Group. Multiple-Licensed
  end_line: 2
  start_line: 2
Authors

      
    
License expression License clue details
(mpl-2.0 OR epl-1.0) AND proprietary-license {'score': 20.37, 'matcher': '3-seq', 'end_line': 3, 'rule_url': 'https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'from_file': None, 'start_line': 2, 'matched_text': ' * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0,\n * and the EPL 1.0 (https://h2database.com/html/license.html).', 'match_coverage': 20.37, 'matched_length': 11, 'rule_relevance': 100, 'rule_identifier': 'mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'license_expression': '(mpl-2.0 OR epl-1.0) AND proprietary-license', 'license_expression_spdx': '(MPL-2.0 OR EPL-1.0) AND LicenseRef-scancode-proprietary-license'}
URL Start line End line
https://h2database.com/html/license.html 3 3
Package URL License Primary language
pkg:osgi/com.h2database.source@2.2.220