1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
# picklers
InstallMethod( IO_Pickle, "for a IEEE754 float", [ IsFile, IsIEEE754FloatRep ],
function( f, v )
if IO_Write(f,"I3EF")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.I3EF :=
function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsIEEE754FloatRep,r);
end;
if IsBound(MPFR_INT) then
InstallMethod( IO_Pickle, "for a MPFR float", [ IsFile, IsMPFRFloat ],
function( f, v )
if IO_Write(f,"MPFR")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.MPFR :=
function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsMPFRFloat,r);
end;
fi;
if IsBound(MPFI_INT) then
InstallMethod( IO_Pickle, "for a MPFI float", [ IsFile, IsMPFIFloat ],
function( f, v )
if IO_Write(f,"MPFI")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.MPFI := function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsMPFIFloat,r);
end;
fi;
if IsBound(MPC_INT) then
InstallMethod( IO_Pickle, "for a MPC float", [ IsFile, IsMPCFloat ],
function( f, v )
if IO_Write(f,"MPCX")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.MPC := function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsMPCFloat,r);
end;
fi;
if IsBound(CXSC_INT) then
InstallMethod( IO_Pickle, "for a CXSC float", [ IsFile, IsCXSCReal ],
function( f, v )
if IO_Write(f,"XSCR")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.XSCR := function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsCXSCReal,r);
end;
InstallMethod( IO_Pickle, "for a CXSC float", [ IsFile, IsCXSCInterval ],
function( f, v )
if IO_Write(f,"XSCI")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.XSCI := function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsCXSCInterval,r);
end;
InstallMethod( IO_Pickle, "for a CXSC float", [ IsFile, IsCXSCComplex ],
function( f, v )
if IO_Write(f,"XSCC")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.XSCC := function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsCXSCComplex,r);
end;
InstallMethod( IO_Pickle, "for a CXSC float", [ IsFile, IsCXSCBox ],
function( f, v )
if IO_Write(f,"XSCB")=fail or IO_Pickle(f,ExtRepOfObj(v))<>IO_OK then
return IO_Error;
fi;
return IO_OK;
end);
IO_Unpicklers.XSCB := function( f )
local r;
r := IO_Unpickle(f);
if not IsList(r) then return IO_Error; fi;
return NewFloat(IsCXSCBox,r);
end;
fi;
|