summaryrefslogtreecommitdiff
path: root/demos/perl
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2001-08-16 23:27:01 +0200
committerKevin Ryde <user42@zip.com.au>2001-08-16 23:27:01 +0200
commitaa9c7988eba9546e57d7f676c9b1d97043c521bf (patch)
tree85f25bca2480982dd455efb3724b046531d3aebe /demos/perl
parent449452dc476e95e3a6241a7c76b5747c969e76d3 (diff)
downloadgmp-aa9c7988eba9546e57d7f676c9b1d97043c521bf.tar.gz
* demos/perl/GMP.xs, GMP/Mpf.pm: Remove separate mpf_get_str.
* demos/perl/GMP/Mpf.pm (overload_string): Use $# (default "%.g").
Diffstat (limited to 'demos/perl')
-rw-r--r--demos/perl/GMP/Mpf.pm22
1 files changed, 18 insertions, 4 deletions
diff --git a/demos/perl/GMP/Mpf.pm b/demos/perl/GMP/Mpf.pm
index 849955178..76246ea33 100644
--- a/demos/perl/GMP/Mpf.pm
+++ b/demos/perl/GMP/Mpf.pm
@@ -29,8 +29,7 @@ require Exporter;
@EXPORT_OK = qw();
%EXPORT_TAGS = ('all' => [qw(
ceil floor get_default_prec get_prec mpf mpf_eq
- mpf_get_str reldiff set_default_prec set_prec
- trunc)],
+ reldiff set_default_prec set_prec trunc)],
'constants' => [@EXPORT],
'noconstants' => [@EXPORT]);
Exporter::export_ok_tags('all');
@@ -73,8 +72,23 @@ sub import {
sub overload_string {
- my ($str, $exp) = mpf_get_str($_[0], 10, 0);
- return GMP::mpf_get_str_convert (10, $str, $exp);
+ my $fmt;
+ {
+ # don't whinge about $# being deprecated
+ local $^W = 0;
+ $fmt = $#;
+ }
+ if (! defined $fmt) {
+ $fmt = '%.Fg';
+ } else {
+ # protect against calling sprintf_internal with a bad format
+ if ($# !~ /^(%%|[^%])*%[-+ .\d]*[eEfgG](%%|[^%])*$/) {
+ die "GMP::Mpf: invalid \$# format: $#\n";
+ }
+ $fmt = $OFMT;
+ $fmt =~ s/(.)$/F$1/;
+ }
+ GMP::sprintf_internal ($fmt, $_[0]);
}
1;