with integer_io; use integer_io; with Standard_Natural_Vectors; use Standard_Natural_Vectors; with Standard_Complex_Polynomials_io; with Symbol_Table,Symbol_Table_io; use Symbol_Table; with Multprec_Floating_Numbers; use Multprec_Floating_Numbers; with Multprec_Floating_Numbers_io; use Multprec_Floating_Numbers_io; with Multprec_Complex_Numbers; use Multprec_Complex_Numbers; with Multprec_Complex_Numbers_io; use Multprec_Complex_Numbers_io; package body Multprec_Complex_Polynomials_io is -- THE INPUT OPERATIONS : procedure get ( n : in out natural; p : in out Poly ) is begin null; end get; procedure get ( file : in file_type; n : in out natural; p : in out Poly ) is begin null; end get; procedure get ( p : in out Poly ) is begin null; end get; procedure get ( file : in file_type; p : in out Poly ) is begin null; end get; -- THE OUTPUT OPERATIONS FOR TERMS : procedure Write ( file : in file_type; c : in Complex_Number ) is cre : Floating_Number := REAL_PART(c); cim : Floating_Number := IMAG_PART(c); begin if Equal(cim,0.0) then if cre > 0.0 then put(file,"+"); end if; put(file,cre); elsif Equal(cre,0.0) then if cim > 0.0 then put(file,"+"); end if; put(file,cim); put(file,"*i"); else put(file,"+("); put(file,cre); if cim > 0.0 then put(file,"+"); end if; put(file,cim); put(file,"*i)"); end if; end Write; procedure Write ( file : in file_type; d : in Degrees; pow : in Power ) is sb : Symbol; begin for i in d'range loop if d(i) /= 0 then put(file,"*"); sb := Symbol_Table.get(i); Symbol_Table_io.put(file,sb); if d(i) /= 1 then if pow = '^' then put(file,"^"); else put(file,"**"); end if; put(d(i),1); end if; end if; end loop; end Write; procedure put ( file : in file_type; t : in Term; pow : in Power ) is begin Write(file,t.cf); if Sum(t.dg) /= 0 then Write(file,t.dg,pow); end if; end put; -- THE OUTPUT OPERATIONS : procedure put ( p : in Poly; pow : in Power ) is begin put(Standard_Output,p,pow); end put; procedure put ( file : in file_type; p : in Poly; pow : in Power ) is procedure Write_Term ( t : in Term; continue : out boolean ) is begin put(file,t,pow); continue := true; end Write_Term; procedure Write_Terms is new Visiting_Iterator(Write_Term); begin Write_Terms(p); end put; procedure put ( n : in natural; p : in Poly; pow : in Power ) is begin put(Standard_Output,n,p,pow); end put; procedure put ( file : in file_type; n : in natural; p : in Poly; pow : in Power ) is begin put(file,n); new_line(file); put(file,p,pow); end put; procedure put ( p : in Poly ) is begin put(Standard_Output,p); end put; procedure put ( file : in file_type; p : in Poly ) is begin put(file,p,'*'); end put; procedure put_line ( p : in Poly ) is begin put_line(Standard_Output,p); end put_line; procedure put_line ( file : in file_type; p : in Poly ) is begin put_line(file,p,'*'); end put_line; procedure put_line ( p : in Poly; pow : in Power ) is begin put_line(Standard_Output,p,pow); end put_line; procedure put_line ( file : in file_type; p : in Poly; pow : in Power ) is procedure Write_Term ( t : in Term; continue : out boolean ) is begin put(file,t,pow); new_line(file); continue := true; end Write_Term; procedure Write_Terms is new Visiting_Iterator(Write_Term); begin Write_Terms(p); end put_line; procedure Display_Format is begin Standard_Complex_Polynomials_io.Display_Format; end Display_Format; end Multprec_Complex_Polynomials_io;