From 32c9a1f00f90b7e331b5a08cc735f677d3ea78bf Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Tue, 22 Mar 2011 18:53:02 -0700 Subject: [PATCH] integrates nicefloats into jsx --- deps/nicefloats/LICENSE | 21 ---- deps/nicefloats/README.markdown | 29 ----- deps/nicefloats/doc/overview.edoc | 33 ------ deps/nicefloats/ebin/nicefloats.app | 14 --- deps/nicefloats/makefile | 8 -- deps/nicefloats/rebar | Bin 83575 -> 0 bytes deps/nicefloats/rebar.config | 2 - rebar.config | 8 +- src/jsx.app.src | 3 +- src/jsx_eep0018.erl | 2 +- .../src/nicefloats.erl => src/jsx_utils.erl | 99 +++++++----------- 11 files changed, 39 insertions(+), 180 deletions(-) delete mode 100644 deps/nicefloats/LICENSE delete mode 100644 deps/nicefloats/README.markdown delete mode 100644 deps/nicefloats/doc/overview.edoc delete mode 100644 deps/nicefloats/ebin/nicefloats.app delete mode 100644 deps/nicefloats/makefile delete mode 100755 deps/nicefloats/rebar delete mode 100644 deps/nicefloats/rebar.config rename deps/nicefloats/src/nicefloats.erl => src/jsx_utils.erl (73%) diff --git a/deps/nicefloats/LICENSE b/deps/nicefloats/LICENSE deleted file mode 100644 index 862287b..0000000 --- a/deps/nicefloats/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -%% The MIT License - -%% Copyright (c) 2010 Alisdair Sullivan - -%% Permission is hereby granted, free of charge, to any person obtaining a copy -%% of this software and associated documentation files (the "Software"), to deal -%% in the Software without restriction, including without limitation the rights -%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -%% copies of the Software, and to permit persons to whom the Software is -%% furnished to do so, subject to the following conditions: - -%% The above copyright notice and this permission notice shall be included in -%% all copies or substantial portions of the Software. - -%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -%% THE SOFTWARE. \ No newline at end of file diff --git a/deps/nicefloats/README.markdown b/deps/nicefloats/README.markdown deleted file mode 100644 index 4136729..0000000 --- a/deps/nicefloats/README.markdown +++ /dev/null @@ -1,29 +0,0 @@ -nicefloats (v0.9.0) -=================== - -an erlang implementation of nice decimal representations of floating point numbers, based on "Printing FLoating-Point Numbers Quickly and Accurately" by Burger & Dybvig - - -### usage ### - -`nicefloats:format(Float)` - - -### installation ### - -`make` or `./rebar compile` to build nicefloats - -`make test` or `./rebar eunit` to run tests - - -### notes ### - -this project was originally a part of [jsx][1], and remnants of that projects history may linger. try to ignore it. - - - - - - - -[1]: http://www.github.com/talentdeficit/jsx/ diff --git a/deps/nicefloats/doc/overview.edoc b/deps/nicefloats/doc/overview.edoc deleted file mode 100644 index a15de3e..0000000 --- a/deps/nicefloats/doc/overview.edoc +++ /dev/null @@ -1,33 +0,0 @@ -@author Alisdair Sullivan -@copyright 2010 Alisdair Sullivan -@version really, really beta -@title nicefloats -@doc nicefloats is an implementation of the algorithms for pretty printing floating point numbers detailed in "Printing FLoating-Point Numbers Quickly and Accurately" by Burger & Dybvig - - -== contents == - -
    -
  1. {@section introduction}
  2. -
  3. {@section features}
  4. -
  5. {@section usage}
  6. -
  7. {@section contributing}
  8. -
- - -== introduction == - -nicefloats quickly and accurately outputs decimal representations of floating point numbers that, when read back (with `erlang:list_to_float/1' or similar), result in the same floating point value - - -== features == - -nicefloats currently only outputs the shortest possible representation of floating point numbers in base 10. - -== usage == - -`nicefloats:format(Float).' - -== contributing == - -nicefloats is available on github. users are encouraged to fork, edit and make pull requests \ No newline at end of file diff --git a/deps/nicefloats/ebin/nicefloats.app b/deps/nicefloats/ebin/nicefloats.app deleted file mode 100644 index a59f94c..0000000 --- a/deps/nicefloats/ebin/nicefloats.app +++ /dev/null @@ -1,14 +0,0 @@ -{application, nicefloats, -[ - {description, "'nice' decimal representations of floating point numbers"}, - {vsn, "0.9.0"}, - {modules, [ - nicefloats - ]}, - {registered, []}, - {applications, [ - kernel, - stdlib - ]}, - {env, []} -]}. diff --git a/deps/nicefloats/makefile b/deps/nicefloats/makefile deleted file mode 100644 index 231c221..0000000 --- a/deps/nicefloats/makefile +++ /dev/null @@ -1,8 +0,0 @@ -compile: - ./rebar compile - -test: - ./rebar eunit - -clean: - ./rebar clean \ No newline at end of file diff --git a/deps/nicefloats/rebar b/deps/nicefloats/rebar deleted file mode 100755 index e98b2a0e3a4629ad0d77232563283d8c1efceb49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83575 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

*5(oeKsfu$NauO+%>H^jBG7rCP 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

7~o|zFxxd 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%0ALN)*RXN>I>%dzZq`Q%_!I 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 an^us91Z=rLKsW&ZAOIV4CXOGkuKyog?$_u5 diff --git a/deps/nicefloats/rebar.config b/deps/nicefloats/rebar.config deleted file mode 100644 index fb9bc83..0000000 --- a/deps/nicefloats/rebar.config +++ /dev/null @@ -1,2 +0,0 @@ -%% uncomment to get verbose output from test suite -%% {eunit_opts, [verbose]}. diff --git a/rebar.config b/rebar.config index 79fe903..dd0eabc 100644 --- a/rebar.config +++ b/rebar.config @@ -1,12 +1,6 @@ -{lib_dirs, ["deps"]}. - -{sub_dirs, [ - "deps/nicefloats" -]}. - %% edit eunit_test_path if you want to run your own tests, use "../" not "./" as %% rebar changes to working dir to .eunit when running tests {eunit_compile_opts, [{d, eunit_test_path, "../test/cases"}]}. %% uncomment to get verbose output from test suite -%% {eunit_opts, [verbose]}. +{eunit_opts, [verbose]}. diff --git a/src/jsx.app.src b/src/jsx.app.src index 2cfa971..56e7a86 100644 --- a/src/jsx.app.src +++ b/src/jsx.app.src @@ -11,7 +11,8 @@ jsx_utf32le, jsx_eep0018, jsx_format, - jsx_verify + jsx_verify, + jsx_utils ]}, {registered, []}, {applications, [ diff --git a/src/jsx_eep0018.erl b/src/jsx_eep0018.erl index 1f27cf0..ee6e494 100644 --- a/src/jsx_eep0018.erl +++ b/src/jsx_eep0018.erl @@ -221,7 +221,7 @@ list_to_events([], Acc) -> term_to_event(List) when is_list(List) -> term_to_events(List); term_to_event(Float) when is_float(Float) -> - [{float, nicefloats:format(Float)}]; + [{float, jsx_utils:nice_decimal(Float)}]; term_to_event(Integer) when is_integer(Integer) -> [{integer, erlang:integer_to_list(Integer)}]; term_to_event(String) when is_binary(String) -> diff --git a/deps/nicefloats/src/nicefloats.erl b/src/jsx_utils.erl similarity index 73% rename from deps/nicefloats/src/nicefloats.erl rename to src/jsx_utils.erl index 9ed5963..cf982de 100644 --- a/deps/nicefloats/src/nicefloats.erl +++ b/src/jsx_utils.erl @@ -1,7 +1,6 @@ %% The MIT License %% Copyright (c) 2010 Alisdair Sullivan -%% 2007 Bob Ippolito %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the "Software"), to deal @@ -22,6 +21,17 @@ %% THE SOFTWARE. +-module(jsx_utils). + +-export([nice_decimal/1]). + + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). +-endif. + + + %% conversion of floats to 'nice' decimal output. erlang's float implementation %% is almost but not quite ieee 754. it converts negative zero to plain zero %% silently, and throws exceptions for any operations that would produce NaN @@ -30,65 +40,26 @@ %% operations produce badarg exceptions. with that in mind, this function %% makes no attempt to handle special values (except for zero) -%% although this is a from scratch implementation of burger & dybvig's algorithm -%% bob ippolito's implementation in mochiweb did provide signifigant guidance -%% and is reflected in the choice of license and copyright attribution - - --module(nicefloats). - --export([format/1, format/2]). - - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). --endif. - - --record(opts, { - exp_limit = 6, - base = 10 -}). - - --spec format(Float::float()) -> string(). - -format(Float) when is_float(Float) -> - format(Float, []). - --spec format(Float::float(), OptsList::list()) -> string(). - -format(Float, OptsList) when is_float(Float) -> - nice_decimal(Float, parse_opts(OptsList)). - - -parse_opts(OptsList) -> - parse_opts(OptsList, #opts{}). - -parse_opts([{exp_limit, Val}|Rest], Opts) when is_integer(Val), Val >= 0 -> - parse_opts(Rest, Opts#opts{exp_limit = Val}); -parse_opts([{base, N}|Rest], Opts) when is_integer(N), N >= 2, N =< 16 -> - parse_opts(Rest, Opts#opts{base = N}); -parse_opts([], Opts) -> - Opts; -parse_opts(_, _) -> - {error, badarg}. - - %% algorithm from "Printing Floating-Point Numbers Quickly and Accurately" by %% Burger & Dybvig -nice_decimal(0.0, _) -> "0.0"; -nice_decimal(Num, Opts) -> + + +-spec nice_decimal(Float::float()) -> string(). + +nice_decimal(0.0) -> "0.0"; +nice_decimal(Num) -> {F, E} = extract(<>), {R, S, MP, MM} = initial_vals(F, E), - K = ceiling((math:log(abs(Num)) / math:log(Opts#opts.base)) - 1.0e-10), + K = ceiling((math:log(abs(Num)) / math:log(10)) - 1.0e-10), Round = F band 1 =:= 0, - {Dpoint, Digits} = scale(R, S, MP, MM, K, Opts#opts.base, Round), + {Dpoint, Digits} = scale(R, S, MP, MM, K, 10, Round), if Num >= 0 -> digits_to_list(Dpoint, Digits) ; Num < 0 -> "-" ++ digits_to_list(Dpoint, Digits) end. +%% internal functions + extract(<<_:1, 0:11, Frac:52>>) -> {Frac, -1074}; extract(<<_:1, Exp:11, Frac:52>>) -> {Frac + (1 bsl 52), Exp - 1075}. @@ -206,36 +177,36 @@ to_ascii(X) -> [X + 48]. %% ascii "1" is [49], "2" is [50], etc... nice_decimal_test_() -> [ - {"0.0", ?_assert(format(0.0) =:= "0.0")}, - {"1.0", ?_assert(format(1.0) =:= "1.0")}, - {"-1.0", ?_assert(format(-1.0) =:= "-1.0")}, + {"0.0", ?_assert(nice_decimal(0.0) =:= "0.0")}, + {"1.0", ?_assert(nice_decimal(1.0) =:= "1.0")}, + {"-1.0", ?_assert(nice_decimal(-1.0) =:= "-1.0")}, {"3.1234567890987654321", ?_assert( - format(3.1234567890987654321) =:= "3.1234567890987655") + nice_decimal(3.1234567890987654321) =:= "3.1234567890987655") }, - {"1.0e23", ?_assert(format(1.0e23) =:= "1.0e23")}, - {"0.3", ?_assert(format(3.0/10.0) =:= "0.3")}, - {"0.0001", ?_assert(format(0.0001) =:= "1.0e-4")}, - {"0.00000001", ?_assert(format(0.00000001) =:= "1.0e-8")}, - {"1.0e-323", ?_assert(format(1.0e-323) =:= "1.0e-323")}, - {"1.0e308", ?_assert(format(1.0e308) =:= "1.0e308")}, + {"1.0e23", ?_assert(nice_decimal(1.0e23) =:= "1.0e23")}, + {"0.3", ?_assert(nice_decimal(3.0/10.0) =:= "0.3")}, + {"0.0001", ?_assert(nice_decimal(0.0001) =:= "1.0e-4")}, + {"0.00000001", ?_assert(nice_decimal(0.00000001) =:= "1.0e-8")}, + {"1.0e-323", ?_assert(nice_decimal(1.0e-323) =:= "1.0e-323")}, + {"1.0e308", ?_assert(nice_decimal(1.0e308) =:= "1.0e308")}, {"min normalized float", ?_assert( - format(math:pow(2, -1022)) =:= "2.2250738585072014e-308" + nice_decimal(math:pow(2, -1022)) =:= "2.2250738585072014e-308" ) }, {"max normalized float", ?_assert( - format((2 - math:pow(2, -52)) * math:pow(2, 1023)) + nice_decimal((2 - math:pow(2, -52)) * math:pow(2, 1023)) =:= "1.7976931348623157e308" ) }, {"min denormalized float", - ?_assert(format(math:pow(2, -1074)) =:= "5.0e-324") + ?_assert(nice_decimal(math:pow(2, -1074)) =:= "5.0e-324") }, {"max denormalized float", ?_assert( - format((1 - math:pow(2, -52)) * math:pow(2, -1022)) + nice_decimal((1 - math:pow(2, -52)) * math:pow(2, -1022)) =:= "2.225073858507201e-308" ) }