```sql
SELECT
    floor(toDecimal64(1232.123132, 4) AS D64),
    ceiling(D64),
    round(D64),
    roundBankers(D64),
    floor(toDecimal128(1232.123132, 24) AS D128),
    ceiling(D128),
    round(D128),
    roundBankers(D128),
    floor(toDecimal256(1232.123132, 24) AS D256),
    ceiling(D256),
    round(D256),
    roundBankers(D256)
FORMAT Vertical

Query id: 04db8c13-4888-47b6-908b-ba1268138f26

Row 1:
──────
floor(toDecimal64(1232.123132, 4)):          1232
ceil(toDecimal64(1232.123132, 4)):           1233
round(toDecimal64(1232.123132, 4)):          1232
roundBankers(toDecimal64(1232.123132, 4)):   1232
floor(toDecimal128(1232.123132, 24)):        1232.12311679615299966394772
ceil(toDecimal128(1232.123132, 24)):         1232.123135242897073373499335
round(toDecimal128(1232.123132, 24)):        1232.123135242897073373499335
roundBankers(toDecimal128(1232.123132, 24)): 1232.123135242897073373499335
floor(toDecimal256(1232.123132, 24)):        1232.12311679615299966394772
ceil(toDecimal256(1232.123132, 24)):         1232.123135242897073373499335
round(toDecimal256(1232.123132, 24)):        1232.123135242897073373499335
roundBankers(toDecimal256(1232.123132, 24)): 1232.123135242897073373499335
```

ColumnNumbers getArgumentsThatAreAlwaysConstant() const override { return {1}; }
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr &, size_t ) const override
    {
        const ColumnWithTypeAndName & column = arguments[0];
        Scale scale_arg = getScaleArg(arguments);
        ColumnPtr res;
        auto call = [&](const auto & types) -> bool
        {
            using Types = std::decay_t<decltype(types)>;
            using DataType = typename Types::LeftType;
            if constexpr (IsDataTypeNumber<DataType> || IsDataTypeDecimal<DataType>)
            {
                using FieldType = typename DataType::FieldType;
                res = Dispatcher<FieldType, rounding_mode, tie_breaking_mode>::apply(column.column.get(), scale_arg);
                return true;
            }
            return false;
        };
#if !defined(__SSE4_1__)
        
        
        if constexpr (rounding_mode == RoundingMode::Round)
            if (0 != fesetround(FE_TONEAREST))