rain-math-float 0.1.9

Decimal floating-point arithmetic for Rainlang / DeFi smart contracts. Packs a 224-bit signed coefficient and 32-bit signed exponent into a single bytes32, with exact decimal semantics (no NaN, Infinity, or negative zero — operations error on nonsense). Rust bindings delegate to the Solidity reference via an in-memory EVM so on-chain and off-chain results match exactly.
Documentation
{
  "abi": [
    {
      "type": "function",
      "name": "packLossless",
      "inputs": [
        {
          "name": "coefficient",
          "type": "int224",
          "internalType": "int224"
        },
        {
          "name": "exponent",
          "type": "int32",
          "internalType": "int32"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "Float"
        }
      ],
      "stateMutability": "pure"
    },
    {
      "type": "function",
      "name": "unpack",
      "inputs": [
        {
          "name": "float",
          "type": "bytes32",
          "internalType": "Float"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "int256",
          "internalType": "int256"
        },
        {
          "name": "",
          "type": "int256",
          "internalType": "int256"
        }
      ],
      "stateMutability": "pure"
    },
    {
      "type": "error",
      "name": "CoefficientOverflow",
      "inputs": [
        {
          "name": "signedCoefficient",
          "type": "int256",
          "internalType": "int256"
        },
        {
          "name": "exponent",
          "type": "int256",
          "internalType": "int256"
        }
      ]
    },
    {
      "type": "error",
      "name": "ExponentOverflow",
      "inputs": [
        {
          "name": "signedCoefficient",
          "type": "int256",
          "internalType": "int256"
        },
        {
          "name": "exponent",
          "type": "int256",
          "internalType": "int256"
        }
      ]
    }
  ],
  "bytecode": {
    "object": "0x6080604052348015600e575f80fd5b506102848061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806371516dd914610038578063b702fecd1461008c575b5f80fd5b61007261004636600461022b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116601b0b9160e09190911d90565b604080519283526020830191909152015b60405180910390f35b61009f61009a366004610242565b6100ad565b604051908152602001610083565b5f6100be83601b0b8360030b6100c5565b9392505050565b5f805f6100d28585610124565b915091508061011c576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044015b60405180910390fd5b509392505050565b5f601b83900b8314838382610188577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000086051561016857620186a0860595506005850194505b8586601b0b1461018357600a86059550846001019450610168565b61019e565b855f0361019e57505f9250600191506102249050565b848560030b146101fa575f8512156101be57505f92508291506102249050565b6040517fd556b1110000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610113565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791505b9250929050565b5f6020828403121561023b575f80fd5b5035919050565b5f8060408385031215610253575f80fd5b823580601b0b8114610263575f80fd5b91506020830135600381900b8114610279575f80fd5b80915050925092905056"
  },
  "deployedBytecode": {
    "object": "0x608060405234801561000f575f80fd5b5060043610610034575f3560e01c806371516dd914610038578063b702fecd1461008c575b5f80fd5b61007261004636600461022b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116601b0b9160e09190911d90565b604080519283526020830191909152015b60405180910390f35b61009f61009a366004610242565b6100ad565b604051908152602001610083565b5f6100be83601b0b8360030b6100c5565b9392505050565b5f805f6100d28585610124565b915091508061011c576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044015b60405180910390fd5b509392505050565b5f601b83900b8314838382610188577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000086051561016857620186a0860595506005850194505b8586601b0b1461018357600a86059550846001019450610168565b61019e565b855f0361019e57505f9250600191506102249050565b848560030b146101fa575f8512156101be57505f92508291506102249050565b6040517fd556b1110000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610113565b50507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1791505b9250929050565b5f6020828403121561023b575f80fd5b5035919050565b5f8060408385031215610253575f80fd5b823580601b0b8114610263575f80fd5b91506020830135600381900b8114610279575f80fd5b80915050925092905056"
  }
}