Not exactly (a small loss of precision at the very end of each number).
I think
bliako's
script works flawlessly if "accuracy" and "precision" are not specified:
use strict;
use warnings;
use Math::BigInt;
use Digest::SHA qw(sha256_hex);
for(my $i=1;$i<=10;$i++){
# the sha as a hex string (no '0x' prepended)
my $hexstr = sha256_hex($i);
# to create a bigint from a hex string we need to prepend '0x' to
+it
my $digest = Math::BigInt->new('0x'.$hexstr);
# operate
print "$i $digest\n";
$digest /= 64;
print "$i $digest\n";
}
Outputs:
1 48635463943209834798109814161294753926839975257569795305637098542720
+658922315
1 75992912411265366872046584627023053010687461339952805165057966473001
+0295661
2 96094161643976066833367867971426158458230048495430276217795328666133
+331159861
2 15014712756871260442713729370535337259098445077410980659030520104083
+33299372
3 35293215426786447154857697798367884701614677727176325092965345248689
+205321678
3 55145649104353823679465152809949819846272933948713007957758351951076
+8833151
4 33984360982413536682390860969296307922929415152052354251133793603654
+468157322
4 53100564035021151066235720264525481129577211175081803517396552505710
+1064958
5 10818240655469999731486825095773005325907358940236581977057259273658
+4172823453
5 16903501024171874580448164212145320821730248344119659339151967615091
+27700366
6 10492023800686533720501340709024820017001830686534338836405100876796
+5015414403
6 16393787188572708938283344857851281276565360447709904431882970119994
+53365850
7 54734117258892461880478870895348100103198302433611928089023761078319
+507514449
7 85522058217019471688248235773981406411247347552518637639099626684874
+2304913
8 20075373234943686845167158285967784892467090849631486320124245130906
+619831459
8 31367770679599510695573684821824663894479829452549197375194133017041
+5934866
9 11463511883541201508393500803711559652562721115888819482889049505863
+143503287
9 17911737318033127356864845005799311957129251743576280442014139852911
+1617238
10 3359281535163583886622750554468341756416232122807515421831543601247
+6449103317
Cheers,
Rob