[BACK]Return to standard_complex_solutions_io.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Homotopy

Annotation of OpenXM_contrib/PHC/Ada/Homotopy/standard_complex_solutions_io.adb, Revision 1.1

1.1     ! maekawa     1: with integer_io;                         use integer_io;
        !             2: with Communications_with_User;           use Communications_with_User;
        !             3: with Standard_Floating_Numbers;          use Standard_Floating_Numbers;
        !             4: with Standard_Floating_Numbers_io;       use Standard_Floating_Numbers_io;
        !             5: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
        !             6: with Standard_Complex_Numbers_io;        use Standard_Complex_Numbers_io;
        !             7: with Standard_Complex_Vectors_io;        use Standard_Complex_Vectors_io;
        !             8: with Symbol_Table;                       use Symbol_Table;
        !             9:
        !            10: package body Standard_Complex_Solutions_io is
        !            11:
        !            12: -- INPUT OF SYMBOL :
        !            13:
        !            14:   procedure skip_symbol ( file : in file_type ) is
        !            15:
        !            16:   -- DESCRIPTION :
        !            17:   --   Skips all symbols until a `:' is encountered.
        !            18:
        !            19:     c : character;
        !            20:
        !            21:   begin
        !            22:     loop
        !            23:       get(file,c);
        !            24:       exit when (c = ':');
        !            25:     end loop;
        !            26:   end skip_symbol;
        !            27:
        !            28:   function get_symbol ( file : in file_type ) return natural is
        !            29:
        !            30:   -- DESCRIPTION :
        !            31:   --   Reads a symbol from standard input and returns its number.
        !            32:
        !            33:     sb : Symbol;
        !            34:     c : character;
        !            35:
        !            36:   begin
        !            37:     for i in sb'range loop
        !            38:       sb(i) := ' ';
        !            39:     end loop;
        !            40:     loop       -- skip the spaces
        !            41:       get(file,c);
        !            42:       exit when c /= ' ';
        !            43:     end loop;
        !            44:     sb(1) := c;
        !            45:     for i in sb'first+1..sb'last loop
        !            46:       get(file,c);
        !            47:       exit when c = ' ';
        !            48:       sb(i) := c;
        !            49:     end loop;
        !            50:     return Symbol_Table.get(sb);
        !            51:   end get_symbol;
        !            52:
        !            53: -- OUTPUT OF A SYMBOL :
        !            54:
        !            55:   procedure put_symbol ( file : in file_type; i : in natural ) is
        !            56:
        !            57:   -- DESCRIPTION :
        !            58:   --   Given the number of the symbol,
        !            59:   --   the corresponding symbol will be written.
        !            60:
        !            61:     sb : Symbol := Get(i);
        !            62:
        !            63:   begin
        !            64:     for k in sb'range loop
        !            65:       exit when sb(k) = ' ';
        !            66:       put(file,sb(k));
        !            67:     end loop;
        !            68:   end put_symbol;
        !            69:
        !            70: -- INPUT OF A SOLUTION VECTOR :
        !            71:
        !            72:   procedure get_vector ( s : in out Solution ) is
        !            73:   begin
        !            74:     get_vector(Standard_Input,s);
        !            75:   end get_vector;
        !            76:
        !            77:   procedure get_vector ( file : in file_type; s : in out Solution ) is
        !            78:
        !            79:     ind : natural;
        !            80:
        !            81:   begin
        !            82:     if Symbol_Table.Number < s.n
        !            83:      then for i in s.v'range loop
        !            84:             skip_symbol(file); get(file,s.v(i));
        !            85:           end loop;
        !            86:      else for i in s.v'range loop
        !            87:             ind := get_symbol(file); skip_symbol(file);
        !            88:             get(file,s.v(ind));
        !            89:           end loop;
        !            90:     end if;
        !            91:   end get_vector;
        !            92:
        !            93: -- INPUT OF A SOLUTION :
        !            94:
        !            95:   procedure get ( s : in out Solution ) is
        !            96:   begin
        !            97:     get(Standard_Input,s);
        !            98:   end get;
        !            99:
        !           100:   procedure get ( file : in file_type; s : in out Solution ) is
        !           101:
        !           102:     c : character;
        !           103:
        !           104:   begin
        !           105:     get(file,c); get(file,c); get(file,c); get(file,c); get(file,s.t);
        !           106:     get(file,c); get(file,c); get(file,c); get(file,c); get(file,s.m);
        !           107:     if not End_of_Line(file)
        !           108:      then get(file,c); Skip_line(file);  -- skip information on this line
        !           109:     end if;
        !           110:     get(file,c); skip_line(file);
        !           111:     get_vector(file,s);
        !           112:     s.err := 0.0;
        !           113:     s.rco := 0.0;
        !           114:     s.res := 0.0;
        !           115:   end get;
        !           116:
        !           117: -- OUTPUT OF A SOLUTION VECTOR :
        !           118:
        !           119:   procedure put_vector ( s : in Solution ) is
        !           120:   begin
        !           121:     put_vector(Standard_Output,s);
        !           122:   end put_vector;
        !           123:
        !           124:   procedure put_vector ( file : in file_type; s : in Solution ) is
        !           125:   begin
        !           126:     if Symbol_Table.Number < s.n
        !           127:      then for i in s.v'range loop
        !           128:             put(file," x"); put(file,i,1); put(file," : ");
        !           129:             put(file,s.v(i)); new_line(file);
        !           130:           end loop;
        !           131:      else for i in s.v'range loop
        !           132:             put(file,' '); put_symbol(file,i); put(file," : ");
        !           133:             put(file,s.v(i)); new_line(file);
        !           134:           end loop;
        !           135:     end if;
        !           136:   end put_vector;
        !           137:
        !           138: -- OUTPUT OF A SOLUTION :
        !           139:
        !           140:   procedure put ( s : in Solution ) is
        !           141:   begin
        !           142:     put(Standard_Output,s);
        !           143:   end put;
        !           144:
        !           145:   procedure put ( file : in file_type; s : in Solution ) is
        !           146:   begin
        !           147:     put(file,"t : "); put(file,s.t); new_line(file);
        !           148:     put(file,"m : "); put(file,s.m,1); new_line(file);
        !           149:     put_line(file,"the solution for t :");
        !           150:     put_vector(file,s);
        !           151:     put(file,"==");
        !           152:     put(file," err : "); put(file,s.err,2,3,3); put(file," =");
        !           153:     put(file," rco : "); put(file,s.rco,2,3,3); put(file," =");
        !           154:     put(file," res : "); put(file,s.res,2,3,3); put(file," =");
        !           155:   end put;
        !           156:
        !           157: -- INPUT OF A LIST OF SOLUTIONS :
        !           158:
        !           159:   procedure get ( len,n : in natural;
        !           160:                   sols,sols_last : in out Solution_List ) is
        !           161:   begin
        !           162:     get(Standard_Input,sols,sols_last);
        !           163:   end get;
        !           164:
        !           165:   procedure get ( len,n : in natural; sols : in out Solution_List ) is
        !           166:   begin
        !           167:     get(Standard_Input,len,n,sols);
        !           168:   end get;
        !           169:
        !           170:   procedure get ( sols,sols_last : in out Solution_List ) is
        !           171:   begin
        !           172:     get(Standard_Input,sols,sols_last);
        !           173:   end get;
        !           174:
        !           175:   procedure get ( sols : in out Solution_List ) is
        !           176:   begin
        !           177:     get(Standard_Input,sols);
        !           178:   end get;
        !           179:
        !           180:   procedure get ( file : in file_type; len,n : in natural;
        !           181:                   sols,sols_last : in out Solution_List ) is
        !           182:
        !           183:     s : Solution(n);
        !           184:     c : character;
        !           185:
        !           186:   begin
        !           187:     for i in 1..len loop
        !           188:       get(file,c); skip_line(file);    -- skip opening bar
        !           189:       get(file,c); skip_line(file);    -- skip line with solution number
        !           190:       get(file,s);
        !           191:       Append(sols,sols_last,s);
        !           192:     end loop;
        !           193:     get(file,c); skip_line(file);     -- skip closing bar
        !           194:   end get;
        !           195:
        !           196:   procedure get ( file : in file_type; len,n : in natural;
        !           197:                   sols : in out Solution_List ) is
        !           198:
        !           199:     sols_last : Solution_List;
        !           200:
        !           201:   begin
        !           202:     get(file,len,n,sols,sols_last);
        !           203:   end get;
        !           204:
        !           205:   procedure get ( file : in file_type;
        !           206:                   sols,sols_last : in out Solution_List ) is
        !           207:
        !           208:     len,n : natural;
        !           209:
        !           210:   begin
        !           211:     get(file,len); get(file,n);
        !           212:     get(file,len,n,sols,sols_last);
        !           213:   end get;
        !           214:
        !           215:   procedure get ( file : in file_type; sols : in out Solution_List ) is
        !           216:
        !           217:     len,n : natural;
        !           218:
        !           219:   begin
        !           220:     get(file,len); get(file,n);
        !           221:     get(file,len,n,sols);
        !           222:   end get;
        !           223:
        !           224: -- OUTPUT OF A LIST OF SOLUTIONS :
        !           225:
        !           226:   procedure put_bar ( file : in file_type ) is
        !           227:   begin
        !           228:     put_line(file,
        !           229:              "===========================================================");
        !           230:   end put_bar;
        !           231:
        !           232:   procedure put ( sols : in Solution_List ) is
        !           233:   begin
        !           234:     put(Standard_Output,sols);
        !           235:   end put;
        !           236:
        !           237:   procedure put ( len,n : in natural; sols : in Solution_List ) is
        !           238:   begin
        !           239:     put(Standard_Output,len,n,sols);
        !           240:   end put;
        !           241:
        !           242:   procedure put ( file : in file_type; sols : in Solution_List ) is
        !           243:   begin
        !           244:     if not Is_Null(sols)
        !           245:      then declare
        !           246:             count : natural := 1;
        !           247:             temp : Solution_List := sols;
        !           248:           begin
        !           249:             put_bar(file);
        !           250:             while not Is_Null(temp) loop
        !           251:               put(file,"solution "); put(file,count,1);
        !           252:               put(file," :"); new_line(file);
        !           253:               put(file,Head_Of(temp).all);
        !           254:               put_line(file,"="); -- instead of : put_bar(file);
        !           255:               temp := Tail_Of(temp);
        !           256:               count := count + 1;
        !           257:             end loop;
        !           258:           end;
        !           259:     end if;
        !           260:   end put;
        !           261:
        !           262:   procedure put ( file : in file_type; len,n : in natural;
        !           263:                   sols : in Solution_List ) is
        !           264:   begin
        !           265:     put(file,len,1); put(file," "); put(file,n,1); new_line(file);
        !           266:     put(file,sols);
        !           267:   end put;
        !           268:
        !           269:   procedure Display_Format is
        !           270:
        !           271:     s : array(1..24) of string(1..65);
        !           272:
        !           273:   begin
        !           274:     s( 1):="  A solution list of a complex polynomial system  is  denoted  by";
        !           275:     s( 2):="the  number of solutions and the dimension, followed by a list of";
        !           276:     s( 3):="solutions.   The  solutions  are  separated  by  a  banner  line,";
        !           277:     s( 4):="followed by their position in the list.                          ";
        !           278:     s( 5):="  A solution consists of the current value  of  the  continuation";
        !           279:     s( 6):="parameter  t,  its  multiplicity  (or  winding number) m, and the";
        !           280:     s( 7):="solution vector.                                                 ";
        !           281:     s( 8):="  A solution vector contains as many lines as the dimension.  The";
        !           282:     s( 9):="i-th  line  starts  with  the  symbol  that  represents  the i-th";
        !           283:     s(10):="unknown, followed by the colon `:' and two floating-point numbers";
        !           284:     s(11):="representing  respectively  the  real  and  imaginary part of the";
        !           285:     s(12):="solution component.                                              ";
        !           286:     s(13):="  As example we list the solution  list of  the  regular solution";
        !           287:     s(14):="(1,i) of a 2-dimensional system in the unknowns x and y at t=1.  ";
        !           288:     s(15):="                                                                 ";
        !           289:     s(16):="1 2                                                              ";
        !           290:     s(17):="=================================================================";
        !           291:     s(18):="solution 1 :                                                     ";
        !           292:     s(19):="t :  1.00000000000000E+00  0.00000000000000E+00                  ";
        !           293:     s(20):="m : 1                                                            ";
        !           294:     s(21):="the solution for t :                                             ";
        !           295:     s(22):=" x : 1.00000000000000E+00  0.00000000000000E+00                  ";
        !           296:     s(23):=" y : 0.00000000000000E+00  1.00000000000000E+00                  ";
        !           297:     s(24):="=================================================================";
        !           298:     for i in s'range loop
        !           299:       put_line(s(i));
        !           300:     end loop;
        !           301:   end Display_Format;
        !           302:
        !           303:   procedure Read ( sols : in out Solution_List ) is
        !           304:
        !           305:     file : file_type;
        !           306:
        !           307:   begin
        !           308:     put_line("Reading the name of the file for the solutions.");
        !           309:     Read_Name_and_Open_File(file);
        !           310:     get(file,sols);
        !           311:     Close(file);
        !           312:   exception
        !           313:     when others => Close(file); Clear(sols);
        !           314:                    put_line("INCORRECT FORMAT OF SOLUTION LIST");
        !           315:                    Display_Format; new_line;
        !           316:                    Read(sols);
        !           317:   end Read;
        !           318:
        !           319: end Standard_Complex_Solutions_io;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>