1#!/usr/bin/perl -w 2 3package Math::BigFloat::Trace; 4 5require 5.005_02; 6use strict; 7 8use Exporter; 9use Math::BigFloat; 10use vars qw($VERSION @ISA $PACKAGE @EXPORT_OK 11 $accuracy $precision $round_mode $div_scale); 12 13@ISA = qw(Exporter Math::BigFloat); 14 15$VERSION = 0.01; 16 17use overload; # inherit overload from BigFloat 18 19# Globals 20$accuracy = $precision = undef; 21$round_mode = 'even'; 22$div_scale = 40; 23 24sub new 25{ 26 my $proto = shift; 27 my $class = ref($proto) || $proto; 28 29 my $value = shift; 30 my $a = $accuracy; $a = $_[0] if defined $_[0]; 31 my $p = $precision; $p = $_[1] if defined $_[1]; 32 my $self = Math::BigFloat->new($value,$a,$p,$round_mode); 33 34# remember, downgrading may return a BigInt, so don't meddle with class 35# bless $self,$class; 36 37 print "MBF new '$value' => '$self' (",ref($self),")"; 38 return $self; 39} 40 41sub import 42 { 43 print "MBF import ",join(' ',@_); 44 my $self = shift; 45 46 # we catch the constants, the rest goes go BigFloat 47 my @a = (); 48 foreach (@_) 49 { 50 push @a, $_ if $_ ne ':constant'; 51 } 52 overload::constant float => sub { $self->new(shift); }; 53 54 Math::BigFloat->import(@a); # need it for subclasses 55# $self->export_to_level(1,$self,@_); # need this ? 56 } 57 581; 59