%YAML 1.2 --- scalar_functions: - name: "ceil" description: > Rounding to the ceiling of the value `x`. impls: - args: - value: fp32 name: "x" return: fp32 - args: - value: fp64 name: "x" return: fp64 - name: "floor" description: > Rounding to the floor of the value `x`. impls: - args: - value: fp32 name: "x" return: fp32 - args: - value: fp64 name: "x" return: fp64 - name: "round" description: > Rounding the value `x` to `s` decimal places. impls: - args: - value: i8 name: "x" description: > Numerical expression to be rounded. - value: i32 name: "s" description: > Number of decimal places to be rounded to. When `s` is a positive number, nothing will happen since `x` is an integer value. When `s` is a negative number, the rounding is performed to the nearest multiple of `10^(-s)`. options: rounding: description: > When a boundary is computed to lie somewhere between two values, and this value cannot be exactly represented, this specifies how to round it. - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie to the even option. - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly halfway, tie away from zero. - TRUNCATE: always round toward zero. - CEILING: always round toward positive infinity. - FLOOR: always round toward negative infinity. - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - TIE_DOWN: round ties with FLOOR rule - TIE_UP: round ties with CEILING rule - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - TIE_TO_ODD: round to nearest value; if exactly halfway, tie to the odd option. values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] nullability: DECLARED_OUTPUT return: i8? - args: - value: i16 name: "x" description: > Numerical expression to be rounded. - value: i32 name: "s" description: > Number of decimal places to be rounded to. When `s` is a positive number, nothing will happen since `x` is an integer value. When `s` is a negative number, the rounding is performed to the nearest multiple of `10^(-s)`. options: rounding: description: > When a boundary is computed to lie somewhere between two values, and this value cannot be exactly represented, this specifies how to round it. - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie to the even option. - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly halfway, tie away from zero. - TRUNCATE: always round toward zero. - CEILING: always round toward positive infinity. - FLOOR: always round toward negative infinity. - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - TIE_DOWN: round ties with FLOOR rule - TIE_UP: round ties with CEILING rule - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - TIE_TO_ODD: round to nearest value; if exactly halfway, tie to the odd option. values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] nullability: DECLARED_OUTPUT return: i16? - args: - value: i32 name: "x" description: > Numerical expression to be rounded. - value: i32 name: "s" description: > Number of decimal places to be rounded to. When `s` is a positive number, nothing will happen since `x` is an integer value. When `s` is a negative number, the rounding is performed to the nearest multiple of `10^(-s)`. options: rounding: description: > When a boundary is computed to lie somewhere between two values, and this value cannot be exactly represented, this specifies how to round it. - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie to the even option. - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly halfway, tie away from zero. - TRUNCATE: always round toward zero. - CEILING: always round toward positive infinity. - FLOOR: always round toward negative infinity. - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - TIE_DOWN: round ties with FLOOR rule - TIE_UP: round ties with CEILING rule - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - TIE_TO_ODD: round to nearest value; if exactly halfway, tie to the odd option. values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] nullability: DECLARED_OUTPUT return: i32? - args: - value: i64 name: "x" description: > Numerical expression to be rounded. - value: i32 name: "s" description: > Number of decimal places to be rounded to. When `s` is a positive number, nothing will happen since `x` is an integer value. When `s` is a negative number, the rounding is performed to the nearest multiple of `10^(-s)`. options: rounding: description: > When a boundary is computed to lie somewhere between two values, and this value cannot be exactly represented, this specifies how to round it. - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie to the even option. - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly halfway, tie away from zero. - TRUNCATE: always round toward zero. - CEILING: always round toward positive infinity. - FLOOR: always round toward negative infinity. - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - TIE_DOWN: round ties with FLOOR rule - TIE_UP: round ties with CEILING rule - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - TIE_TO_ODD: round to nearest value; if exactly halfway, tie to the odd option. values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] nullability: DECLARED_OUTPUT return: i64? - args: - value: fp32 name: "x" description: > Numerical expression to be rounded. - value: i32 name: "s" description: > Number of decimal places to be rounded to. When `s` is a positive number, the rounding is performed to a `s` number of decimal places. When `s` is a negative number, the rounding is performed to the left side of the decimal point as specified by `s`. options: rounding: description: > When a boundary is computed to lie somewhere between two values, and this value cannot be exactly represented, this specifies how to round it. - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie to the even option. - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly halfway, tie away from zero. - TRUNCATE: always round toward zero. - CEILING: always round toward positive infinity. - FLOOR: always round toward negative infinity. - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - TIE_DOWN: round ties with FLOOR rule - TIE_UP: round ties with CEILING rule - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - TIE_TO_ODD: round to nearest value; if exactly halfway, tie to the odd option. values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] nullability: DECLARED_OUTPUT return: fp32? - args: - value: fp64 name: "x" description: > Numerical expression to be rounded. - value: i32 name: "s" description: > Number of decimal places to be rounded to. When `s` is a positive number, the rounding is performed to a `s` number of decimal places. When `s` is a negative number, the rounding is performed to the left side of the decimal point as specified by `s`. options: rounding: description: > When a boundary is computed to lie somewhere between two values, and this value cannot be exactly represented, this specifies how to round it. - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie to the even option. - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly halfway, tie away from zero. - TRUNCATE: always round toward zero. - CEILING: always round toward positive infinity. - FLOOR: always round toward negative infinity. - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule - TIE_DOWN: round ties with FLOOR rule - TIE_UP: round ties with CEILING rule - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule - TIE_TO_ODD: round to nearest value; if exactly halfway, tie to the odd option. values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] nullability: DECLARED_OUTPUT return: fp64?