From 03eb5ce3f4d69932ae7fae84d55c4e7e8016e25b Mon Sep 17 00:00:00 2001 From: ARATA Mizuki Date: Tue, 25 Jul 2023 19:21:38 +0900 Subject: [PATCH] Add IEEE_REAL signature --- doc/BasisLibrary.md | 3 ++- lib/lunarml/ml/basis/basis-js-common.mlb | 2 ++ lib/lunarml/ml/basis/basis-lua.mlb | 2 ++ lib/lunarml/ml/basis/basis-luajit.mlb | 2 ++ lib/lunarml/ml/basis/ieee-real.sml | 14 ++++++++++++++ lib/lunarml/ml/basis/js-common/mlbasis.sml | 14 -------------- lib/lunarml/ml/basis/lua/mlbasis.sml | 14 -------------- lib/lunarml/ml/basis/luajit/mlbasis.sml | 14 -------------- 8 files changed, 22 insertions(+), 43 deletions(-) create mode 100644 lib/lunarml/ml/basis/ieee-real.sml diff --git a/doc/BasisLibrary.md b/doc/BasisLibrary.md index d29f9d10..752803a5 100644 --- a/doc/BasisLibrary.md +++ b/doc/BasisLibrary.md @@ -270,7 +270,7 @@ structure LargeWord = Word64 ## structure IEEEReal - partial ```sml -structure IEEEReal : sig +signature IEEE_REAL = sig exception Unordered datatype real_order = LESS | EQUAL | GREATER | UNORDERED datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL @@ -282,6 +282,7 @@ structure IEEEReal : sig (* val scan : (char, 'a) StringCvt.reader -> (decimal_approx, 'a) StringCvt.reader *) (* val fromString : string -> decimal_approx option *) end +structure IEEEReal : IEEE_REAL ``` ## signature REAL (structure Real, structure LargeReal) - partial diff --git a/lib/lunarml/ml/basis/basis-js-common.mlb b/lib/lunarml/ml/basis/basis-js-common.mlb index c22f3f0a..ab3df0b2 100644 --- a/lib/lunarml/ml/basis/basis-js-common.mlb +++ b/lib/lunarml/ml/basis/basis-js-common.mlb @@ -23,6 +23,7 @@ $(TARGET_LANG)/string-prim.sml $(TARGET_LANG)/array-prim.sml (* depends on int, Unsafe, Subscript, List.tabulate *) math-sig.sml string-cvt-sig.sml +ieee-real.sml js-common/mlbasis.sml vector-sig.sml array.sml @@ -57,6 +58,7 @@ signature BOOL signature BYTE signature CHAR signature DATE +signature IEEE_REAL signature INTEGER signature INT_INF signature LIST diff --git a/lib/lunarml/ml/basis/basis-lua.mlb b/lib/lunarml/ml/basis/basis-lua.mlb index 9a849b06..9d754439 100644 --- a/lib/lunarml/ml/basis/basis-lua.mlb +++ b/lib/lunarml/ml/basis/basis-lua.mlb @@ -18,6 +18,7 @@ bool.sml $(TARGET_LANG)/array-prim.sml math-sig.sml string-cvt-sig.sml +ieee-real.sml lua/mlbasis.sml vector-sig.sml array.sml @@ -57,6 +58,7 @@ signature BOOL signature BYTE signature CHAR signature DATE +signature IEEE_REAL signature INTEGER signature INT_INF signature LIST diff --git a/lib/lunarml/ml/basis/basis-luajit.mlb b/lib/lunarml/ml/basis/basis-luajit.mlb index 85e8135b..ef280811 100644 --- a/lib/lunarml/ml/basis/basis-luajit.mlb +++ b/lib/lunarml/ml/basis/basis-luajit.mlb @@ -21,6 +21,7 @@ bool.sml $(TARGET_LANG)/array-prim.sml math-sig.sml string-cvt-sig.sml +ieee-real.sml luajit/mlbasis.sml vector-sig.sml array.sml @@ -59,6 +60,7 @@ signature BOOL signature BYTE signature CHAR signature DATE +signature IEEE_REAL signature INTEGER signature INT_INF signature LIST diff --git a/lib/lunarml/ml/basis/ieee-real.sml b/lib/lunarml/ml/basis/ieee-real.sml new file mode 100644 index 00000000..df5d0c6a --- /dev/null +++ b/lib/lunarml/ml/basis/ieee-real.sml @@ -0,0 +1,14 @@ +signature IEEE_REAL = sig + exception Unordered + datatype real_order = LESS | EQUAL | GREATER | UNORDERED + datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL + datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO + type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } +end +structure IEEEReal : IEEE_REAL = struct +exception Unordered +datatype real_order = LESS | EQUAL | GREATER | UNORDERED +datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL +datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO +type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } +end; diff --git a/lib/lunarml/ml/basis/js-common/mlbasis.sml b/lib/lunarml/ml/basis/js-common/mlbasis.sml index 3256dbcd..ec2346e1 100644 --- a/lib/lunarml/ml/basis/js-common/mlbasis.sml +++ b/lib/lunarml/ml/basis/js-common/mlbasis.sml @@ -288,20 +288,6 @@ fun toString (x : word) : string = fmt StringCvt.HEX x (* scan, fromString *) end; (* structure Word *) -structure IEEEReal : sig - exception Unordered - datatype real_order = LESS | EQUAL | GREATER | UNORDERED - datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL - datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO - type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } - end = struct -exception Unordered -datatype real_order = LESS | EQUAL | GREATER | UNORDERED -datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL -datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO -type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } -end; - signature REAL = sig type real (* structure Math *) diff --git a/lib/lunarml/ml/basis/lua/mlbasis.sml b/lib/lunarml/ml/basis/lua/mlbasis.sml index e614f6ab..f09451c5 100644 --- a/lib/lunarml/ml/basis/lua/mlbasis.sml +++ b/lib/lunarml/ml/basis/lua/mlbasis.sml @@ -578,20 +578,6 @@ val toString : word -> string = fn x => Lua.unsafeFromValue (Lua.call1 Lua.Lib.s (* scan, fromString *) end; (* structure Word *) -structure IEEEReal : sig - exception Unordered - datatype real_order = LESS | EQUAL | GREATER | UNORDERED - datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL - datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO - type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } - end = struct -exception Unordered -datatype real_order = LESS | EQUAL | GREATER | UNORDERED -datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL -datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO -type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } -end; - signature REAL = sig type real (* structure Math *) diff --git a/lib/lunarml/ml/basis/luajit/mlbasis.sml b/lib/lunarml/ml/basis/luajit/mlbasis.sml index ee3a4e81..dc67991c 100644 --- a/lib/lunarml/ml/basis/luajit/mlbasis.sml +++ b/lib/lunarml/ml/basis/luajit/mlbasis.sml @@ -277,20 +277,6 @@ val toString : word -> string = fn x => Lua.unsafeFromValue (Lua.call1 Lua.Lib.s (* scan, fromString *) end; (* structure Word *) -structure IEEEReal : sig - exception Unordered - datatype real_order = LESS | EQUAL | GREATER | UNORDERED - datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL - datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO - type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } - end = struct -exception Unordered -datatype real_order = LESS | EQUAL | GREATER | UNORDERED -datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL -datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO -type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int } -end; - signature REAL = sig type real (* structure Math *)