comparison src/pt-const.cc @ 164:e2c950dd96d2

[project @ 1993-10-18 19:32:00 by jwe]
author jwe
date Mon, 18 Oct 1993 19:32:00 +0000
parents 21b599370728
children b6b4d8c513fe
comparison
equal deleted inserted replaced
163:b4bdbdf95e05 164:e2c950dd96d2
385 { 385 {
386 string = strsave (s); 386 string = strsave (s);
387 type_tag = string_constant; 387 type_tag = string_constant;
388 } 388 }
389 389
390 tree_constant_rep::tree_constant_rep (const String& s)
391 {
392 string = strsave (s);
393 type_tag = string_constant;
394 }
395
396 tree_constant_rep::tree_constant_rep (double b, double l, double i) 390 tree_constant_rep::tree_constant_rep (double b, double l, double i)
397 { 391 {
398 range = new Range (b, l, i); 392 range = new Range (b, l, i);
399 int nel = range->nelem (); 393 int nel = range->nelem ();
400 if (nel < 0) 394 if (nel < 0)
653 } 647 }
654 } 648 }
655 } 649 }
656 650
657 double 651 double
658 tree_constant_rep::to_scalar (void) 652 tree_constant_rep::to_scalar (void) const
659 { 653 {
660 tree_constant tmp = make_numeric (); 654 tree_constant tmp = make_numeric ();
661 655
662 double retval = 0.0; 656 double retval = 0.0;
663 657
700 } 694 }
701 return retval; 695 return retval;
702 } 696 }
703 697
704 ColumnVector 698 ColumnVector
705 tree_constant_rep::to_vector (void) 699 tree_constant_rep::to_vector (void) const
706 { 700 {
707 tree_constant tmp = make_numeric (); 701 tree_constant tmp = make_numeric ();
708 702
709 ColumnVector retval; 703 ColumnVector retval;
710 704
741 } 735 }
742 return retval; 736 return retval;
743 } 737 }
744 738
745 Matrix 739 Matrix
746 tree_constant_rep::to_matrix (void) 740 tree_constant_rep::to_matrix (void) const
747 { 741 {
748 tree_constant tmp = make_numeric (); 742 tree_constant tmp = make_numeric ();
749 743
750 Matrix retval; 744 Matrix retval;
751 745
827 } 821 }
828 return type_tag; 822 return type_tag;
829 } 823 }
830 824
831 tree_constant 825 tree_constant
832 tree_constant_rep::make_numeric (int force_str_conv = 0) 826 tree_constant_rep::make_numeric (int force_str_conv = 0) const
833 { 827 {
834 tree_constant retval; 828 tree_constant retval;
835 switch (type_tag) 829 switch (type_tag)
836 { 830 {
837 case scalar_constant: 831 case scalar_constant:
1246 maybe_page_output (output_buf); 1240 maybe_page_output (output_buf);
1247 } 1241 }
1248 } 1242 }
1249 1243
1250 tree_constant * 1244 tree_constant *
1251 tree_constant_rep::eval (tree_constant *args, int nargin, int nargout, 1245 tree_constant_rep::eval (const tree_constant *args, int nargin, int nargout,
1252 int print) 1246 int print)
1253 { 1247 {
1254 if (error_state) 1248 if (error_state)
1255 return NULL_TREE_CONST; 1249 return NULL_TREE_CONST;
1256 1250
1533 } 1527 }
1534 return status; 1528 return status;
1535 } 1529 }
1536 1530
1537 double 1531 double
1538 tree_constant_rep::double_value (void) 1532 tree_constant_rep::double_value (void) const
1539 { 1533 {
1540 switch (type_tag) 1534 switch (type_tag)
1541 { 1535 {
1542 case scalar_constant: 1536 case scalar_constant:
1543 return scalar; 1537 return scalar;
1558 break; 1552 break;
1559 } 1553 }
1560 } 1554 }
1561 1555
1562 Matrix 1556 Matrix
1563 tree_constant_rep::matrix_value (void) 1557 tree_constant_rep::matrix_value (void) const
1564 { 1558 {
1565 switch (type_tag) 1559 switch (type_tag)
1566 { 1560 {
1567 case matrix_constant: 1561 case matrix_constant:
1568 return *matrix; 1562 return *matrix;
1583 break; 1577 break;
1584 } 1578 }
1585 } 1579 }
1586 1580
1587 Complex 1581 Complex
1588 tree_constant_rep::complex_value (void) 1582 tree_constant_rep::complex_value (void) const
1589 { 1583 {
1590 switch (type_tag) 1584 switch (type_tag)
1591 { 1585 {
1592 case complex_scalar_constant: 1586 case complex_scalar_constant:
1593 return *complex_scalar; 1587 return *complex_scalar;
1598 break; 1592 break;
1599 } 1593 }
1600 } 1594 }
1601 1595
1602 ComplexMatrix 1596 ComplexMatrix
1603 tree_constant_rep::complex_matrix_value (void) 1597 tree_constant_rep::complex_matrix_value (void) const
1604 { 1598 {
1605 switch (type_tag) 1599 switch (type_tag)
1606 { 1600 {
1607 case scalar_constant: 1601 case scalar_constant:
1608 { 1602 {
1624 break; 1618 break;
1625 } 1619 }
1626 } 1620 }
1627 1621
1628 char * 1622 char *
1629 tree_constant_rep::string_value (void) 1623 tree_constant_rep::string_value (void) const
1630 { 1624 {
1631 assert (type_tag == string_constant); 1625 assert (type_tag == string_constant);
1632 return string; 1626 return string;
1633 } 1627 }
1634 1628
1635 Range 1629 Range
1636 tree_constant_rep::range_value (void) 1630 tree_constant_rep::range_value (void) const
1637 { 1631 {
1638 assert (type_tag == range_constant); 1632 assert (type_tag == range_constant);
1639 return *range; 1633 return *range;
1640 } 1634 }
1641 1635
1642 int 1636 int
1643 tree_constant_rep::rows (void) 1637 tree_constant_rep::rows (void) const
1644 { 1638 {
1645 int retval = -1; 1639 int retval = -1;
1646 switch (type_tag) 1640 switch (type_tag)
1647 { 1641 {
1648 case scalar_constant: 1642 case scalar_constant:
1669 } 1663 }
1670 return retval; 1664 return retval;
1671 } 1665 }
1672 1666
1673 int 1667 int
1674 tree_constant_rep::columns (void) 1668 tree_constant_rep::columns (void) const
1675 { 1669 {
1676 int retval = -1; 1670 int retval = -1;
1677 switch (type_tag) 1671 switch (type_tag)
1678 { 1672 {
1679 case scalar_constant: 1673 case scalar_constant:
1704 } 1698 }
1705 return retval; 1699 return retval;
1706 } 1700 }
1707 1701
1708 tree_constant 1702 tree_constant
1709 tree_constant_rep::all (void) 1703 tree_constant_rep::all (void) const
1710 { 1704 {
1711 if (type_tag == string_constant || type_tag == range_constant) 1705 if (type_tag == string_constant || type_tag == range_constant)
1712 { 1706 {
1713 tree_constant tmp = make_numeric (); 1707 tree_constant tmp = make_numeric ();
1714 return tmp.all (); 1708 return tmp.all ();
1750 } 1744 }
1751 return retval; 1745 return retval;
1752 } 1746 }
1753 1747
1754 tree_constant 1748 tree_constant
1755 tree_constant_rep::any (void) 1749 tree_constant_rep::any (void) const
1756 { 1750 {
1757 if (type_tag == string_constant || type_tag == range_constant) 1751 if (type_tag == string_constant || type_tag == range_constant)
1758 { 1752 {
1759 tree_constant tmp = make_numeric (); 1753 tree_constant tmp = make_numeric ();
1760 return tmp.any (); 1754 return tmp.any ();
1796 } 1790 }
1797 return retval; 1791 return retval;
1798 } 1792 }
1799 1793
1800 tree_constant 1794 tree_constant
1801 tree_constant_rep::isstr (void) 1795 tree_constant_rep::isstr (void) const
1802 { 1796 {
1803 double status = 0.0; 1797 double status = 0.0;
1804 if (const_type () == string_constant) 1798 if (type_tag == string_constant)
1805 status = 1.0; 1799 status = 1.0;
1806 tree_constant retval (status); 1800 tree_constant retval (status);
1807 return retval; 1801 return retval;
1808 } 1802 }
1809 1803
1877 } 1871 }
1878 return retval; 1872 return retval;
1879 } 1873 }
1880 1874
1881 tree_constant 1875 tree_constant
1882 tree_constant_rep::cumprod (void) 1876 tree_constant_rep::cumprod (void) const
1883 { 1877 {
1884 if (type_tag == string_constant || type_tag == range_constant) 1878 if (type_tag == string_constant || type_tag == range_constant)
1885 { 1879 {
1886 tree_constant tmp = make_numeric (); 1880 tree_constant tmp = make_numeric ();
1887 return tmp.cumprod (); 1881 return tmp.cumprod ();
1917 } 1911 }
1918 return retval; 1912 return retval;
1919 } 1913 }
1920 1914
1921 tree_constant 1915 tree_constant
1922 tree_constant_rep::cumsum (void) 1916 tree_constant_rep::cumsum (void) const
1923 { 1917 {
1924 if (type_tag == string_constant || type_tag == range_constant) 1918 if (type_tag == string_constant || type_tag == range_constant)
1925 { 1919 {
1926 tree_constant tmp = make_numeric (); 1920 tree_constant tmp = make_numeric ();
1927 return tmp.cumsum (); 1921 return tmp.cumsum ();
1957 } 1951 }
1958 return retval; 1952 return retval;
1959 } 1953 }
1960 1954
1961 tree_constant 1955 tree_constant
1962 tree_constant_rep::prod (void) 1956 tree_constant_rep::prod (void) const
1963 { 1957 {
1964 if (type_tag == string_constant || type_tag == range_constant) 1958 if (type_tag == string_constant || type_tag == range_constant)
1965 { 1959 {
1966 tree_constant tmp = make_numeric (); 1960 tree_constant tmp = make_numeric ();
1967 return tmp.prod (); 1961 return tmp.prod ();
1997 } 1991 }
1998 return retval; 1992 return retval;
1999 } 1993 }
2000 1994
2001 tree_constant 1995 tree_constant
2002 tree_constant_rep::sum (void) 1996 tree_constant_rep::sum (void) const
2003 { 1997 {
2004 if (type_tag == string_constant || type_tag == range_constant) 1998 if (type_tag == string_constant || type_tag == range_constant)
2005 { 1999 {
2006 tree_constant tmp = make_numeric (); 2000 tree_constant tmp = make_numeric ();
2007 return tmp.sum (); 2001 return tmp.sum ();
2037 } 2031 }
2038 return retval; 2032 return retval;
2039 } 2033 }
2040 2034
2041 tree_constant 2035 tree_constant
2042 tree_constant_rep::sumsq (void) 2036 tree_constant_rep::sumsq (void) const
2043 { 2037 {
2044 if (type_tag == string_constant || type_tag == range_constant) 2038 if (type_tag == string_constant || type_tag == range_constant)
2045 { 2039 {
2046 tree_constant tmp = make_numeric (); 2040 tree_constant tmp = make_numeric ();
2047 return tmp.sumsq (); 2041 return tmp.sumsq ();
2080 } 2074 }
2081 return retval; 2075 return retval;
2082 } 2076 }
2083 2077
2084 static tree_constant 2078 static tree_constant
2085 make_diag (Matrix& v, int k) 2079 make_diag (const Matrix& v, int k)
2086 { 2080 {
2087 int nr = v.rows (); 2081 int nr = v.rows ();
2088 int nc = v.columns (); 2082 int nc = v.columns ();
2089 assert (nc == 1 || nr == 1); 2083 assert (nc == 1 || nr == 1);
2090 2084
2122 2116
2123 return retval; 2117 return retval;
2124 } 2118 }
2125 2119
2126 static tree_constant 2120 static tree_constant
2127 make_diag (ComplexMatrix& v, int k) 2121 make_diag (const ComplexMatrix& v, int k)
2128 { 2122 {
2129 int nr = v.rows (); 2123 int nr = v.rows ();
2130 int nc = v.columns (); 2124 int nc = v.columns ();
2131 assert (nc == 1 || nr == 1); 2125 assert (nc == 1 || nr == 1);
2132 2126
2164 2158
2165 return retval; 2159 return retval;
2166 } 2160 }
2167 2161
2168 tree_constant 2162 tree_constant
2169 tree_constant_rep::diag (void) 2163 tree_constant_rep::diag (void) const
2170 { 2164 {
2171 if (type_tag == string_constant || type_tag == range_constant) 2165 if (type_tag == string_constant || type_tag == range_constant)
2172 { 2166 {
2173 tree_constant tmp = make_numeric (); 2167 tree_constant tmp = make_numeric ();
2174 return tmp.diag (); 2168 return tmp.diag ();
2220 } 2214 }
2221 return retval; 2215 return retval;
2222 } 2216 }
2223 2217
2224 tree_constant 2218 tree_constant
2225 tree_constant_rep::diag (tree_constant& a) 2219 tree_constant_rep::diag (const tree_constant& a) const
2226 { 2220 {
2227 if (type_tag == string_constant || type_tag == range_constant) 2221 if (type_tag == string_constant || type_tag == range_constant)
2228 { 2222 {
2229 tree_constant tmp = make_numeric (); 2223 tree_constant tmp = make_numeric ();
2230 return tmp.diag (a); 2224 return tmp.diag (a);
2334 else if (warn) 2328 else if (warn)
2335 warning ("expecting string, found numeric constant"); 2329 warning ("expecting string, found numeric constant");
2336 } 2330 }
2337 2331
2338 tree_constant 2332 tree_constant
2339 tree_constant_rep::mapper (Mapper_fcn& m_fcn, int print) 2333 tree_constant_rep::mapper (Mapper_fcn& m_fcn, int print) const
2340 { 2334 {
2341 tree_constant retval; 2335 tree_constant retval;
2342 2336
2343 if (type_tag == string_constant || type_tag == range_constant) 2337 if (type_tag == string_constant || type_tag == range_constant)
2344 { 2338 {
2473 /* 2467 /*
2474 * Construct return vector of empty matrices. Return empty matrices 2468 * Construct return vector of empty matrices. Return empty matrices
2475 * and/or gripe when appropriate. 2469 * and/or gripe when appropriate.
2476 */ 2470 */
2477 tree_constant * 2471 tree_constant *
2478 vector_of_empties (int nargout, char *fcn_name) 2472 vector_of_empties (int nargout, const char *fcn_name)
2479 { 2473 {
2480 tree_constant *retval = NULL_TREE_CONST; 2474 tree_constant *retval = NULL_TREE_CONST;
2481 2475
2482 // Got an empty argument, check if should gripe/return empty values. 2476 // Got an empty argument, check if should gripe/return empty values.
2483 2477