comparison src/pt-const.cc @ 2305:5a3f1d00a474

[project @ 1996-07-09 16:20:40 by jwe]
author jwe
date Tue, 09 Jul 1996 16:20:40 +0000
parents 38fea6d34daf
children 18953de8c308
comparison
equal deleted inserted replaced
2304:532542bd9493 2305:5a3f1d00a474
160 int nr = a.rows (); 160 int nr = a.rows ();
161 int nc = a.columns (); 161 int nc = a.columns ();
162 162
163 for (int j = 0; j < nc; j++) 163 for (int j = 0; j < nc; j++)
164 for (int i = 0; i < nr; i++) 164 for (int i = 0; i < nr; i++)
165 if (imag (a.elem (i, j)) != 0.0) 165 if (imag (a (i, j)) != 0.0)
166 return true; 166 return true;
167 167
168 return false; 168 return false;
169 } 169 }
170 170
483 483
484 OCT_VAL_REP::octave_value_rep (const Matrix& m) 484 OCT_VAL_REP::octave_value_rep (const Matrix& m)
485 { 485 {
486 if (m.rows () == 1 && m.columns () == 1) 486 if (m.rows () == 1 && m.columns () == 1)
487 { 487 {
488 scalar = m.elem (0, 0); 488 scalar = m (0, 0);
489 type_tag = scalar_constant; 489 type_tag = scalar_constant;
490 } 490 }
491 else 491 else
492 { 492 {
493 matrix = new Matrix (m); 493 matrix = new Matrix (m);
497 497
498 OCT_VAL_REP::octave_value_rep (const DiagMatrix& d) 498 OCT_VAL_REP::octave_value_rep (const DiagMatrix& d)
499 { 499 {
500 if (d.rows () == 1 && d.columns () == 1) 500 if (d.rows () == 1 && d.columns () == 1)
501 { 501 {
502 scalar = d.elem (0, 0); 502 scalar = d (0, 0);
503 type_tag = scalar_constant; 503 type_tag = scalar_constant;
504 } 504 }
505 else 505 else
506 { 506 {
507 matrix = new Matrix (d); 507 matrix = new Matrix (d);
512 OCT_VAL_REP::octave_value_rep (const RowVector& v, int prefer_column_vector) 512 OCT_VAL_REP::octave_value_rep (const RowVector& v, int prefer_column_vector)
513 { 513 {
514 int len = v.capacity (); 514 int len = v.capacity ();
515 if (len == 1) 515 if (len == 1)
516 { 516 {
517 scalar = v.elem (0); 517 scalar = v (0);
518 type_tag = scalar_constant; 518 type_tag = scalar_constant;
519 } 519 }
520 else 520 else
521 { 521 {
522 int pcv = (prefer_column_vector < 0) 522 int pcv = (prefer_column_vector < 0)
525 525
526 if (pcv) 526 if (pcv)
527 { 527 {
528 Matrix m (len, 1); 528 Matrix m (len, 1);
529 for (int i = 0; i < len; i++) 529 for (int i = 0; i < len; i++)
530 m.elem (i, 0) = v.elem (i); 530 m (i, 0) = v (i);
531 matrix = new Matrix (m); 531 matrix = new Matrix (m);
532 type_tag = matrix_constant; 532 type_tag = matrix_constant;
533 } 533 }
534 else 534 else
535 { 535 {
536 Matrix m (1, len); 536 Matrix m (1, len);
537 for (int i = 0; i < len; i++) 537 for (int i = 0; i < len; i++)
538 m.elem (0, i) = v.elem (i); 538 m (0, i) = v (i);
539 matrix = new Matrix (m); 539 matrix = new Matrix (m);
540 type_tag = matrix_constant; 540 type_tag = matrix_constant;
541 } 541 }
542 } 542 }
543 } 543 }
545 OCT_VAL_REP::octave_value_rep (const ColumnVector& v, int prefer_column_vector) 545 OCT_VAL_REP::octave_value_rep (const ColumnVector& v, int prefer_column_vector)
546 { 546 {
547 int len = v.capacity (); 547 int len = v.capacity ();
548 if (len == 1) 548 if (len == 1)
549 { 549 {
550 scalar = v.elem (0); 550 scalar = v (0);
551 type_tag = scalar_constant; 551 type_tag = scalar_constant;
552 } 552 }
553 else 553 else
554 { 554 {
555 int pcv = (prefer_column_vector < 0) 555 int pcv = (prefer_column_vector < 0)
558 558
559 if (pcv) 559 if (pcv)
560 { 560 {
561 Matrix m (len, 1); 561 Matrix m (len, 1);
562 for (int i = 0; i < len; i++) 562 for (int i = 0; i < len; i++)
563 m.elem (i, 0) = v.elem (i); 563 m (i, 0) = v (i);
564 matrix = new Matrix (m); 564 matrix = new Matrix (m);
565 type_tag = matrix_constant; 565 type_tag = matrix_constant;
566 } 566 }
567 else 567 else
568 { 568 {
569 Matrix m (1, len); 569 Matrix m (1, len);
570 for (int i = 0; i < len; i++) 570 for (int i = 0; i < len; i++)
571 m.elem (0, i) = v.elem (i); 571 m (0, i) = v (i);
572 matrix = new Matrix (m); 572 matrix = new Matrix (m);
573 type_tag = matrix_constant; 573 type_tag = matrix_constant;
574 } 574 }
575 } 575 }
576 } 576 }
591 591
592 OCT_VAL_REP::octave_value_rep (const ComplexMatrix& m) 592 OCT_VAL_REP::octave_value_rep (const ComplexMatrix& m)
593 { 593 {
594 if (m.rows () == 1 && m.columns () == 1) 594 if (m.rows () == 1 && m.columns () == 1)
595 { 595 {
596 Complex c = m.elem (0, 0); 596 Complex c = m (0, 0);
597 597
598 if (::imag (c) == 0.0) 598 if (::imag (c) == 0.0)
599 { 599 {
600 scalar = ::real (c); 600 scalar = ::real (c);
601 type_tag = scalar_constant; 601 type_tag = scalar_constant;
615 615
616 OCT_VAL_REP::octave_value_rep (const ComplexDiagMatrix& d) 616 OCT_VAL_REP::octave_value_rep (const ComplexDiagMatrix& d)
617 { 617 {
618 if (d.rows () == 1 && d.columns () == 1) 618 if (d.rows () == 1 && d.columns () == 1)
619 { 619 {
620 Complex c = d.elem (0, 0); 620 Complex c = d (0, 0);
621 621
622 if (::imag (c) == 0.0) 622 if (::imag (c) == 0.0)
623 { 623 {
624 scalar = ::real (c); 624 scalar = ::real (c);
625 type_tag = scalar_constant; 625 type_tag = scalar_constant;
641 int prefer_column_vector) 641 int prefer_column_vector)
642 { 642 {
643 int len = v.capacity (); 643 int len = v.capacity ();
644 if (len == 1) 644 if (len == 1)
645 { 645 {
646 Complex c = v.elem (0); 646 Complex c = v (0);
647 647
648 if (::imag (c) == 0.0) 648 if (::imag (c) == 0.0)
649 { 649 {
650 scalar = ::real (c); 650 scalar = ::real (c);
651 type_tag = scalar_constant; 651 type_tag = scalar_constant;
664 664
665 if (pcv) 665 if (pcv)
666 { 666 {
667 ComplexMatrix m (len, 1); 667 ComplexMatrix m (len, 1);
668 for (int i = 0; i < len; i++) 668 for (int i = 0; i < len; i++)
669 m.elem (i, 0) = v.elem (i); 669 m (i, 0) = v (i);
670 complex_matrix = new ComplexMatrix (m); 670 complex_matrix = new ComplexMatrix (m);
671 type_tag = complex_matrix_constant; 671 type_tag = complex_matrix_constant;
672 } 672 }
673 else 673 else
674 { 674 {
675 ComplexMatrix m (1, len); 675 ComplexMatrix m (1, len);
676 for (int i = 0; i < len; i++) 676 for (int i = 0; i < len; i++)
677 m.elem (0, i) = v.elem (i); 677 m (0, i) = v (i);
678 complex_matrix = new ComplexMatrix (m); 678 complex_matrix = new ComplexMatrix (m);
679 type_tag = complex_matrix_constant; 679 type_tag = complex_matrix_constant;
680 } 680 }
681 } 681 }
682 } 682 }
685 prefer_column_vector) 685 prefer_column_vector)
686 { 686 {
687 int len = v.capacity (); 687 int len = v.capacity ();
688 if (len == 1) 688 if (len == 1)
689 { 689 {
690 Complex c = v.elem (0); 690 Complex c = v (0);
691 691
692 if (::imag (c) == 0.0) 692 if (::imag (c) == 0.0)
693 { 693 {
694 scalar = ::real (c); 694 scalar = ::real (c);
695 type_tag = scalar_constant; 695 type_tag = scalar_constant;
708 708
709 if (pcv) 709 if (pcv)
710 { 710 {
711 ComplexMatrix m (len, 1); 711 ComplexMatrix m (len, 1);
712 for (int i = 0; i < len; i++) 712 for (int i = 0; i < len; i++)
713 m.elem (i, 0) = v.elem (i); 713 m (i, 0) = v (i);
714 complex_matrix = new ComplexMatrix (m); 714 complex_matrix = new ComplexMatrix (m);
715 type_tag = complex_matrix_constant; 715 type_tag = complex_matrix_constant;
716 } 716 }
717 else 717 else
718 { 718 {
719 ComplexMatrix m (1, len); 719 ComplexMatrix m (1, len);
720 for (int i = 0; i < len; i++) 720 for (int i = 0; i < len; i++)
721 m.elem (0, i) = v.elem (i); 721 m (0, i) = v (i);
722 complex_matrix = new ComplexMatrix (m); 722 complex_matrix = new ComplexMatrix (m);
723 type_tag = complex_matrix_constant; 723 type_tag = complex_matrix_constant;
724 } 724 }
725 } 725 }
726 } 726 }
744 char_matrix = new charMatrix (nr, nc, 0); 744 char_matrix = new charMatrix (nr, nc, 0);
745 for (int i = 0; i < nr; i++) 745 for (int i = 0; i < nr; i++)
746 { 746 {
747 nc = s[i].length (); 747 nc = s[i].length ();
748 for (int j = 0; j < nc; j++) 748 for (int j = 0; j < nc; j++)
749 char_matrix->elem (i, j) = s[i][j]; 749 (*char_matrix) (i, j) = s[i][j];
750 } 750 }
751 type_tag = char_matrix_constant_str; 751 type_tag = char_matrix_constant_str;
752 } 752 }
753 753
754 OCT_VAL_REP::octave_value_rep (const charMatrix& chm, bool is_str) 754 OCT_VAL_REP::octave_value_rep (const charMatrix& chm, bool is_str)
1159 case matrix_constant: 1159 case matrix_constant:
1160 { 1160 {
1161 Matrix m = (matrix->all ()) . all (); 1161 Matrix m = (matrix->all ()) . all ();
1162 retval = (m.rows () == 1 1162 retval = (m.rows () == 1
1163 && m.columns () == 1 1163 && m.columns () == 1
1164 && m.elem (0, 0) != 0.0); 1164 && m (0, 0) != 0.0);
1165 } 1165 }
1166 break; 1166 break;
1167 1167
1168 case complex_scalar_constant: 1168 case complex_scalar_constant:
1169 retval = (*complex_scalar != 0.0); 1169 retval = (*complex_scalar != 0.0);
1172 case complex_matrix_constant: 1172 case complex_matrix_constant:
1173 { 1173 {
1174 Matrix m = (complex_matrix->all ()) . all (); 1174 Matrix m = (complex_matrix->all ()) . all ();
1175 retval = (m.rows () == 1 1175 retval = (m.rows () == 1
1176 && m.columns () == 1 1176 && m.columns () == 1
1177 && m.elem (0, 0) != 0.0); 1177 && m (0, 0) != 0.0);
1178 } 1178 }
1179 break; 1179 break;
1180 1180
1181 default: 1181 default:
1182 gripe_wrong_type_arg (0, *this); 1182 gripe_wrong_type_arg (0, *this);
1206 break; 1206 break;
1207 1207
1208 case matrix_constant: 1208 case matrix_constant:
1209 { 1209 {
1210 if (Vdo_fortran_indexing && rows () > 0 && columns () > 0) 1210 if (Vdo_fortran_indexing && rows () > 0 && columns () > 0)
1211 retval = matrix->elem (0, 0); 1211 retval = (*matrix) (0, 0);
1212 else 1212 else
1213 gripe_invalid_conversion ("real matrix", "real scalar"); 1213 gripe_invalid_conversion ("real matrix", "real scalar");
1214 } 1214 }
1215 break; 1215 break;
1216 1216
1228 retval = ::real (*complex_scalar); 1228 retval = ::real (*complex_scalar);
1229 else if (type_tag == complex_matrix_constant) 1229 else if (type_tag == complex_matrix_constant)
1230 { 1230 {
1231 if (Vdo_fortran_indexing 1231 if (Vdo_fortran_indexing
1232 && rows () > 0 && columns () > 0) 1232 && rows () > 0 && columns () > 0)
1233 retval = ::real (complex_matrix->elem (0, 0)); 1233 retval = ::real ((*complex_matrix) (0, 0));
1234 else 1234 else
1235 gripe_invalid_conversion ("complex matrix", "real scalar"); 1235 gripe_invalid_conversion ("complex matrix", "real scalar");
1236 } 1236 }
1237 else 1237 else
1238 panic_impossible (); 1238 panic_impossible ();
1245 case char_matrix_constant: 1245 case char_matrix_constant:
1246 { 1246 {
1247 int len = char_matrix->rows (); 1247 int len = char_matrix->rows ();
1248 if ((char_matrix->rows () == 1 && len == 1) 1248 if ((char_matrix->rows () == 1 && len == 1)
1249 || (len > 1 && Vdo_fortran_indexing)) 1249 || (len > 1 && Vdo_fortran_indexing))
1250 retval = toascii ((int) char_matrix->elem (0, 0)); 1250 retval = toascii ((int) (*char_matrix) (0, 0));
1251 else 1251 else
1252 gripe_invalid_conversion ("char matrix", "real scalar"); 1252 gripe_invalid_conversion ("char matrix", "real scalar");
1253 } 1253 }
1254 break; 1254 break;
1255 1255
1264 1264
1265 int len = char_matrix->rows (); 1265 int len = char_matrix->rows ();
1266 if (flag 1266 if (flag
1267 && ((char_matrix->rows () == 1 && len == 1) 1267 && ((char_matrix->rows () == 1 && len == 1)
1268 || (len > 1 && Vdo_fortran_indexing))) 1268 || (len > 1 && Vdo_fortran_indexing)))
1269 retval = toascii ((int) char_matrix->elem (0, 0)); 1269 retval = toascii ((int) (*char_matrix) (0, 0));
1270 else 1270 else
1271 gripe_invalid_conversion ("string", "real scalar"); 1271 gripe_invalid_conversion ("string", "real scalar");
1272 } 1272 }
1273 break; 1273 break;
1274 1274
1377 case matrix_constant: 1377 case matrix_constant:
1378 { 1378 {
1379 if (Vdo_fortran_indexing && rows () > 0 && columns () > 0) 1379 if (Vdo_fortran_indexing && rows () > 0 && columns () > 0)
1380 { 1380 {
1381 if (type_tag == complex_matrix_constant) 1381 if (type_tag == complex_matrix_constant)
1382 retval = complex_matrix->elem (0, 0); 1382 retval = (*complex_matrix) (0, 0);
1383 else 1383 else
1384 retval = matrix->elem (0, 0); 1384 retval = (*matrix) (0, 0);
1385 } 1385 }
1386 else 1386 else
1387 gripe_invalid_conversion ("real matrix", "real scalar"); 1387 gripe_invalid_conversion ("real matrix", "real scalar");
1388 } 1388 }
1389 break; 1389 break;
1391 case char_matrix_constant: 1391 case char_matrix_constant:
1392 { 1392 {
1393 int len = char_matrix->cols (); 1393 int len = char_matrix->cols ();
1394 if ((char_matrix->rows () == 1 && len == 1) 1394 if ((char_matrix->rows () == 1 && len == 1)
1395 || (len > 1 && Vdo_fortran_indexing)) 1395 || (len > 1 && Vdo_fortran_indexing))
1396 retval = toascii ((int) char_matrix->elem (0, 0)); 1396 retval = toascii ((int) (*char_matrix) (0, 0));
1397 else 1397 else
1398 gripe_invalid_conversion ("char matrix", "complex scalar"); 1398 gripe_invalid_conversion ("char matrix", "complex scalar");
1399 } 1399 }
1400 break; 1400 break;
1401 1401
1410 1410
1411 int len = char_matrix->cols (); 1411 int len = char_matrix->cols ();
1412 if (flag 1412 if (flag
1413 && ((char_matrix->rows () == 1 && len == 1) 1413 && ((char_matrix->rows () == 1 && len == 1)
1414 || (len > 1 && Vdo_fortran_indexing))) 1414 || (len > 1 && Vdo_fortran_indexing)))
1415 retval = toascii ((int) char_matrix->elem (0, 0)); 1415 retval = toascii ((int) (*char_matrix) (0, 0));
1416 else 1416 else
1417 gripe_invalid_conversion ("string", "complex scalar"); 1417 gripe_invalid_conversion ("string", "complex scalar");
1418 } 1418 }
1419 break; 1419 break;
1420 1420
1597 int nc = m.columns (); 1597 int nc = m.columns ();
1598 if (nr == 1) 1598 if (nr == 1)
1599 { 1599 {
1600 retval.resize (nc); 1600 retval.resize (nc);
1601 for (int i = 0; i < nc; i++) 1601 for (int i = 0; i < nc; i++)
1602 retval.elem (i) = m (0, i); 1602 retval (i) = m (0, i);
1603 } 1603 }
1604 else if (nc == 1) 1604 else if (nc == 1)
1605 { 1605 {
1606 retval.resize (nr); 1606 retval.resize (nr);
1607 for (int i = 0; i < nr; i++) 1607 for (int i = 0; i < nr; i++)
1608 retval.elem (i) = m.elem (i, 0); 1608 retval (i) = m (i, 0);
1609 } 1609 }
1610 else if (nr > 0 && nc > 0 1610 else if (nr > 0 && nc > 0
1611 && (Vdo_fortran_indexing || force_vector_conversion)) 1611 && (Vdo_fortran_indexing || force_vector_conversion))
1612 { 1612 {
1613 retval.resize (nr * nc); 1613 retval.resize (nr * nc);
1614 int k = 0; 1614 int k = 0;
1615 for (int j = 0; j < nc; j++) 1615 for (int j = 0; j < nc; j++)
1616 for (int i = 0; i < nr; i++) 1616 for (int i = 0; i < nr; i++)
1617 retval.elem (k++) = m.elem (i, j); 1617 retval (k++) = m (i, j);
1618 } 1618 }
1619 else 1619 else
1620 gripe_invalid_conversion ("real matrix", "real vector"); 1620 gripe_invalid_conversion ("real matrix", "real vector");
1621 1621
1622 return retval; 1622 return retval;
1641 int nc = m.columns (); 1641 int nc = m.columns ();
1642 if (nr == 1) 1642 if (nr == 1)
1643 { 1643 {
1644 retval.resize (nc); 1644 retval.resize (nc);
1645 for (int i = 0; i < nc; i++) 1645 for (int i = 0; i < nc; i++)
1646 retval.elem (i) = m (0, i); 1646 retval (i) = m (0, i);
1647 } 1647 }
1648 else if (nc == 1) 1648 else if (nc == 1)
1649 { 1649 {
1650 retval.resize (nr); 1650 retval.resize (nr);
1651 for (int i = 0; i < nr; i++) 1651 for (int i = 0; i < nr; i++)
1652 retval.elem (i) = m.elem (i, 0); 1652 retval (i) = m (i, 0);
1653 } 1653 }
1654 else if (nr > 0 && nc > 0 1654 else if (nr > 0 && nc > 0
1655 && (Vdo_fortran_indexing || force_vector_conversion)) 1655 && (Vdo_fortran_indexing || force_vector_conversion))
1656 { 1656 {
1657 retval.resize (nr * nc); 1657 retval.resize (nr * nc);
1658 int k = 0; 1658 int k = 0;
1659 for (int j = 0; j < nc; j++) 1659 for (int j = 0; j < nc; j++)
1660 for (int i = 0; i < nr; i++) 1660 for (int i = 0; i < nr; i++)
1661 retval.elem (k++) = m.elem (i, j); 1661 retval (k++) = m (i, j);
1662 } 1662 }
1663 else 1663 else
1664 gripe_invalid_conversion ("complex matrix", "complex vector"); 1664 gripe_invalid_conversion ("complex matrix", "complex vector");
1665 1665
1666 return retval; 1666 return retval;
1722 1722
1723 for (int j = 0; j < nc; j++) 1723 for (int j = 0; j < nc; j++)
1724 { 1724 {
1725 for (int i = 0; i < nr; i++) 1725 for (int i = 0; i < nr; i++)
1726 { 1726 {
1727 double d = m.elem (i, j); 1727 double d = m (i, j);
1728 1728
1729 if (xisnan (d)) 1729 if (xisnan (d))
1730 { 1730 {
1731 ::error ("invalid conversion from NaN to character"); 1731 ::error ("invalid conversion from NaN to character");
1732 return retval; 1732 return retval;
1735 { 1735 {
1736 // XXX FIXME XXX -- warn about out of 1736 // XXX FIXME XXX -- warn about out of
1737 // range conversions? 1737 // range conversions?
1738 1738
1739 int ival = NINT (d); 1739 int ival = NINT (d);
1740 chm.elem (i, j) = (char) ival; 1740 chm (i, j) = (char) ival;
1741 } 1741 }
1742 } 1742 }
1743 } 1743 }
1744 1744
1745 retval = octave_value (chm, 1); 1745 retval = octave_value (chm, 1);
1826 double *cop_out = matrix->fortran_vec (); 1826 double *cop_out = matrix->fortran_vec ();
1827 1827
1828 for (int i = 0; i < len; i++) 1828 for (int i = 0; i < len; i++)
1829 { 1829 {
1830 if (new_nr == 1) 1830 if (new_nr == 1)
1831 m->elem (0, i) = *cop_out++; 1831 (*m) (0, i) = *cop_out++;
1832 else 1832 else
1833 m->elem (i, 0) = *cop_out++; 1833 (*m) (i, 0) = *cop_out++;
1834 } 1834 }
1835 1835
1836 delete matrix; 1836 delete matrix;
1837 matrix = m; 1837 matrix = m;
1838 } 1838 }
1843 Complex *cop_out = complex_matrix->fortran_vec (); 1843 Complex *cop_out = complex_matrix->fortran_vec ();
1844 1844
1845 for (int i = 0; i < len; i++) 1845 for (int i = 0; i < len; i++)
1846 { 1846 {
1847 if (new_nr == 1) 1847 if (new_nr == 1)
1848 cm->elem (0, i) = *cop_out++; 1848 (*cm) (0, i) = *cop_out++;
1849 else 1849 else
1850 cm->elem (i, 0) = *cop_out++; 1850 (*cm) (i, 0) = *cop_out++;
1851 } 1851 }
1852 1852
1853 delete complex_matrix; 1853 delete complex_matrix;
1854 complex_matrix = cm; 1854 complex_matrix = cm;
1855 } 1855 }
1949 int nc = char_matrix->cols (); 1949 int nc = char_matrix->cols ();
1950 1950
1951 if (nr == 1 && nc == 1) 1951 if (nr == 1 && nc == 1)
1952 { 1952 {
1953 type_tag = scalar_constant; 1953 type_tag = scalar_constant;
1954 double tmp = toascii ((int) char_matrix->elem (0, 0)); 1954 double tmp = toascii ((int) (*char_matrix) (0, 0));
1955 delete char_matrix; 1955 delete char_matrix;
1956 scalar = tmp; 1956 scalar = tmp;
1957 } 1957 }
1958 else if (nr == 0 || nc == 0) 1958 else if (nr == 0 || nc == 0)
1959 { 1959 {
1969 1969
1970 for (int i = 0; i < nr; i++) 1970 for (int i = 0; i < nr; i++)
1971 { 1971 {
1972 for (int j = 0; j < nc; j++) 1972 for (int j = 0; j < nc; j++)
1973 { 1973 {
1974 int c = (int) char_matrix->elem (i, j); 1974 int c = (int) (*char_matrix) (i, j);
1975 tm->elem (i, j) = toascii (c); 1975 (*tm) (i, j) = toascii (c);
1976 } 1976 }
1977 } 1977 }
1978 delete char_matrix; 1978 delete char_matrix;
1979 matrix = tm; 1979 matrix = tm;
1980 } 1980 }
1991 type_tag = matrix_constant; 1991 type_tag = matrix_constant;
1992 Matrix *tm = new Matrix (1, len); 1992 Matrix *tm = new Matrix (1, len);
1993 double b = range->base (); 1993 double b = range->base ();
1994 double increment = range->inc (); 1994 double increment = range->inc ();
1995 for (int i = 0; i < len; i++) 1995 for (int i = 0; i < len; i++)
1996 tm->elem (0, i) = b + i * increment; 1996 (*tm) (0, i) = b + i * increment;
1997 delete range; 1997 delete range;
1998 matrix = tm; 1998 matrix = tm;
1999 } 1999 }
2000 else if (len == 1) 2000 else if (len == 1)
2001 { 2001 {
2221 switch (type_tag) 2221 switch (type_tag)
2222 { 2222 {
2223 case matrix_constant: 2223 case matrix_constant:
2224 if (nr == 1 && nc == 1) 2224 if (nr == 1 && nc == 1)
2225 { 2225 {
2226 double d = matrix->elem (0, 0); 2226 double d = (*matrix) (0, 0);
2227 delete matrix; 2227 delete matrix;
2228 scalar = d; 2228 scalar = d;
2229 type_tag = scalar_constant; 2229 type_tag = scalar_constant;
2230 } 2230 }
2231 break; 2231 break;
2232 2232
2233 case complex_matrix_constant: 2233 case complex_matrix_constant:
2234 if (nr == 1 && nc == 1) 2234 if (nr == 1 && nc == 1)
2235 { 2235 {
2236 Complex c = complex_matrix->elem (0, 0); 2236 Complex c = (*complex_matrix) (0, 0);
2237 delete complex_matrix; 2237 delete complex_matrix;
2238 complex_scalar = new Complex (c); 2238 complex_scalar = new Complex (c);
2239 type_tag = complex_scalar_constant; 2239 type_tag = complex_scalar_constant;
2240 } 2240 }
2241 break; 2241 break;