1# -*- mode: perl; -*- 2 3use strict; 4use warnings; 5 6use Test::More tests => 460; 7 8use Math::BigFloat; 9 10while (<DATA>) { 11 s/#.*$//; # remove comments 12 s/\s+$//; # remove trailing whitespace 13 next unless length; # skip empty lines 14 15 my ($x_str, $expected) = split /:/; 16 my ($x, $str); 17 18 my $test = qq|\$x = Math::BigFloat -> new("$x_str");| 19 . qq| \$str = \$x -> bsstr();|; 20 21 note "\n$test\n\n"; 22 eval $test; 23 24 is($str, $expected, qq|input value is "$x_str"|); 25 is($x, $x_str, "input object is unmodified"); 26} 27 28__DATA__ 29 30NaN:NaN 31 32inf:inf 33-inf:-inf 34 350:0e+0 36 37# positive numbers 38 390.000000000001:1e-12 400.00000000001:1e-11 410.0000000001:1e-10 420.000000001:1e-9 430.00000001:1e-8 440.0000001:1e-7 450.000001:1e-6 460.00001:1e-5 470.0001:1e-4 480.001:1e-3 490.01:1e-2 500.1:1e-1 511:1e+0 5210:1e+1 53100:1e+2 541000:1e+3 5510000:1e+4 56100000:1e+5 571000000:1e+6 5810000000:1e+7 59100000000:1e+8 601000000000:1e+9 6110000000000:1e+10 62100000000000:1e+11 631000000000000:1e+12 64 650.0000000000012:12e-13 660.000000000012:12e-12 670.00000000012:12e-11 680.0000000012:12e-10 690.000000012:12e-9 700.00000012:12e-8 710.0000012:12e-7 720.000012:12e-6 730.00012:12e-5 740.0012:12e-4 750.012:12e-3 760.12:12e-2 771.2:12e-1 7812:12e+0 79120:12e+1 801200:12e+2 8112000:12e+3 82120000:12e+4 831200000:12e+5 8412000000:12e+6 85120000000:12e+7 861200000000:12e+8 8712000000000:12e+9 88120000000000:12e+10 891200000000000:12e+11 90 910.00000000000123:123e-14 920.0000000000123:123e-13 930.000000000123:123e-12 940.00000000123:123e-11 950.0000000123:123e-10 960.000000123:123e-9 970.00000123:123e-8 980.0000123:123e-7 990.000123:123e-6 1000.00123:123e-5 1010.0123:123e-4 1020.123:123e-3 1031.23:123e-2 10412.3:123e-1 105123:123e+0 1061230:123e+1 10712300:123e+2 108123000:123e+3 1091230000:123e+4 11012300000:123e+5 111123000000:123e+6 1121230000000:123e+7 11312300000000:123e+8 114123000000000:123e+9 1151230000000000:123e+10 116 1170.000000000001234:1234e-15 1180.00000000001234:1234e-14 1190.0000000001234:1234e-13 1200.000000001234:1234e-12 1210.00000001234:1234e-11 1220.0000001234:1234e-10 1230.000001234:1234e-9 1240.00001234:1234e-8 1250.0001234:1234e-7 1260.001234:1234e-6 1270.01234:1234e-5 1280.1234:1234e-4 1291.234:1234e-3 13012.34:1234e-2 131123.4:1234e-1 1321234:1234e+0 13312340:1234e+1 134123400:1234e+2 1351234000:1234e+3 13612340000:1234e+4 137123400000:1234e+5 1381234000000:1234e+6 13912340000000:1234e+7 140123400000000:1234e+8 1411234000000000:1234e+9 142 1430.000003141592:3141592e-12 1440.00003141592:3141592e-11 1450.0003141592:3141592e-10 1460.003141592:3141592e-9 1470.03141592:3141592e-8 1480.3141592:3141592e-7 1493.141592:3141592e-6 15031.41592:3141592e-5 151314.1592:3141592e-4 1523141.592:3141592e-3 15331415.92:3141592e-2 154314159.2:3141592e-1 1553141592:3141592e+0 156 157# negative numbers 158 159-0.000000000001:-1e-12 160-0.00000000001:-1e-11 161-0.0000000001:-1e-10 162-0.000000001:-1e-9 163-0.00000001:-1e-8 164-0.0000001:-1e-7 165-0.000001:-1e-6 166-0.00001:-1e-5 167-0.0001:-1e-4 168-0.001:-1e-3 169-0.01:-1e-2 170-0.1:-1e-1 171-1:-1e+0 172-10:-1e+1 173-100:-1e+2 174-1000:-1e+3 175-10000:-1e+4 176-100000:-1e+5 177-1000000:-1e+6 178-10000000:-1e+7 179-100000000:-1e+8 180-1000000000:-1e+9 181-10000000000:-1e+10 182-100000000000:-1e+11 183-1000000000000:-1e+12 184 185-0.0000000000012:-12e-13 186-0.000000000012:-12e-12 187-0.00000000012:-12e-11 188-0.0000000012:-12e-10 189-0.000000012:-12e-9 190-0.00000012:-12e-8 191-0.0000012:-12e-7 192-0.000012:-12e-6 193-0.00012:-12e-5 194-0.0012:-12e-4 195-0.012:-12e-3 196-0.12:-12e-2 197-1.2:-12e-1 198-12:-12e+0 199-120:-12e+1 200-1200:-12e+2 201-12000:-12e+3 202-120000:-12e+4 203-1200000:-12e+5 204-12000000:-12e+6 205-120000000:-12e+7 206-1200000000:-12e+8 207-12000000000:-12e+9 208-120000000000:-12e+10 209-1200000000000:-12e+11 210 211-0.00000000000123:-123e-14 212-0.0000000000123:-123e-13 213-0.000000000123:-123e-12 214-0.00000000123:-123e-11 215-0.0000000123:-123e-10 216-0.000000123:-123e-9 217-0.00000123:-123e-8 218-0.0000123:-123e-7 219-0.000123:-123e-6 220-0.00123:-123e-5 221-0.0123:-123e-4 222-0.123:-123e-3 223-1.23:-123e-2 224-12.3:-123e-1 225-123:-123e+0 226-1230:-123e+1 227-12300:-123e+2 228-123000:-123e+3 229-1230000:-123e+4 230-12300000:-123e+5 231-123000000:-123e+6 232-1230000000:-123e+7 233-12300000000:-123e+8 234-123000000000:-123e+9 235-1230000000000:-123e+10 236 237-0.000000000001234:-1234e-15 238-0.00000000001234:-1234e-14 239-0.0000000001234:-1234e-13 240-0.000000001234:-1234e-12 241-0.00000001234:-1234e-11 242-0.0000001234:-1234e-10 243-0.000001234:-1234e-9 244-0.00001234:-1234e-8 245-0.0001234:-1234e-7 246-0.001234:-1234e-6 247-0.01234:-1234e-5 248-0.1234:-1234e-4 249-1.234:-1234e-3 250-12.34:-1234e-2 251-123.4:-1234e-1 252-1234:-1234e+0 253-12340:-1234e+1 254-123400:-1234e+2 255-1234000:-1234e+3 256-12340000:-1234e+4 257-123400000:-1234e+5 258-1234000000:-1234e+6 259-12340000000:-1234e+7 260-123400000000:-1234e+8 261-1234000000000:-1234e+9 262 263-0.000003141592:-3141592e-12 264-0.00003141592:-3141592e-11 265-0.0003141592:-3141592e-10 266-0.003141592:-3141592e-9 267-0.03141592:-3141592e-8 268-0.3141592:-3141592e-7 269-3.141592:-3141592e-6 270-31.41592:-3141592e-5 271-314.1592:-3141592e-4 272-3141.592:-3141592e-3 273-31415.92:-3141592e-2 274-314159.2:-3141592e-1 275-3141592:-3141592e+0 276