arbiter-bindings 0.1.7

Rust bindings for common solidity smart contracts
Documentation
pragma solidity ^0.8.17;
import "solmate/utils/FixedPointMathLib.sol";
import "solstat/Gaussian.sol";
import "solstat/Invariant.sol";

contract ArbiterMath {
    using FixedPointMathLib for int256;
    using FixedPointMathLib for uint256;

    function cdf(int256 input) public pure returns (int256 output) {
        output = Gaussian.cdf(input);
    }

    function pdf(int256 input) public pure returns (int256 output) {
        output = Gaussian.pdf(input);
    }

    function ppf(int256 input) public pure returns (int256 output) {
        output = Gaussian.ppf(input);
    }

    function mulWadDown(uint256 x, uint256 y) public pure returns (uint256 z) {
        z = FixedPointMathLib.mulWadDown(x, y);
    }

    function mulWadUp(uint256 x, uint256 y) public pure returns (uint256 z) {
        z = FixedPointMathLib.mulWadUp(x, y);
    }

    function divWadDown(uint256 x, uint256 y) public pure returns (uint256 z) {
        z = FixedPointMathLib.divWadDown(x, y);
    }

    function divWadUp(uint256 x, uint256 y) public pure returns (uint256 z) {
        z = FixedPointMathLib.divWadUp(x, y);
    }

    function log(int256 x) public pure returns (int256 z) {
        z = FixedPointMathLib.lnWad(x);
    }

    function sqrt(uint256 x) public pure returns (uint256 z) {
        z = FixedPointMathLib.sqrt(x);
    }

    function invariant(uint256 R_y, uint256 R_x, uint256 stk, uint256 vol, uint256 tau) public pure returns (int256 k) {
        k = Invariant.invariant(R_y, R_x, stk, vol, tau);
    }
}