Commit 4620eaf
committed
Require a square matrix in solve(), matching R
solve(a, b) with a rectangular a fell through to a least-squares dgels
call, returning qr.solve()'s answer where R raises "'a' (m x n) must be
square". Statically rectangular systems are now a compile error and
symbolic squareness is guarded at run time before the dgesv call, via
the assert_square_matrix() helper the other LAPACK lowerings already
use. The now-unreachable rectangular tail of lapack_solve() (dgels, and
a dgelsy branch qr.solve() never reached) is deleted; qr.solve() keeps
its least-squares behavior.
The solve output follows ncol(a) while b follows nrow(a); when ncol is
statically 1 the output declares as a Fortran scalar, so a
symbolic-length b is copied elementwise instead of by whole-array
assignment.1 parent 59469f0 commit 4620eaf
3 files changed
Lines changed: 55 additions & 175 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
35 | 42 | | |
36 | 43 | | |
37 | 44 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
643 | 643 | | |
644 | 644 | | |
645 | 645 | | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | | - | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
653 | 652 | | |
654 | 653 | | |
655 | 654 | | |
| |||
671 | 670 | | |
672 | 671 | | |
673 | 672 | | |
674 | | - | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
675 | 684 | | |
676 | 685 | | |
677 | 686 | | |
| |||
813 | 822 | | |
814 | 823 | | |
815 | 824 | | |
816 | | - | |
817 | | - | |
818 | | - | |
819 | | - | |
820 | | - | |
821 | | - | |
822 | | - | |
823 | | - | |
824 | | - | |
825 | | - | |
826 | | - | |
827 | | - | |
828 | | - | |
829 | | - | |
830 | | - | |
831 | | - | |
832 | | - | |
833 | | - | |
834 | | - | |
835 | | - | |
836 | | - | |
837 | | - | |
838 | | - | |
839 | | - | |
840 | | - | |
841 | | - | |
842 | | - | |
843 | | - | |
844 | | - | |
845 | | - | |
846 | | - | |
847 | | - | |
848 | | - | |
849 | | - | |
850 | | - | |
851 | | - | |
852 | | - | |
853 | | - | |
854 | | - | |
855 | | - | |
856 | | - | |
857 | | - | |
858 | | - | |
859 | | - | |
860 | | - | |
861 | | - | |
862 | | - | |
863 | | - | |
864 | | - | |
865 | | - | |
866 | | - | |
867 | | - | |
868 | | - | |
869 | | - | |
870 | | - | |
871 | | - | |
872 | | - | |
873 | | - | |
874 | | - | |
875 | | - | |
876 | | - | |
877 | | - | |
878 | | - | |
879 | | - | |
880 | | - | |
881 | | - | |
882 | | - | |
883 | | - | |
884 | | - | |
885 | | - | |
886 | | - | |
887 | | - | |
888 | | - | |
889 | | - | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | | - | |
895 | | - | |
896 | | - | |
897 | | - | |
898 | | - | |
899 | | - | |
900 | | - | |
901 | | - | |
902 | | - | |
903 | | - | |
904 | | - | |
905 | | - | |
906 | | - | |
907 | | - | |
908 | | - | |
909 | | - | |
910 | | - | |
911 | | - | |
912 | | - | |
913 | | - | |
914 | | - | |
915 | | - | |
916 | | - | |
917 | | - | |
918 | | - | |
919 | | - | |
920 | | - | |
921 | | - | |
922 | | - | |
923 | | - | |
924 | | - | |
925 | | - | |
926 | | - | |
927 | | - | |
928 | | - | |
929 | | - | |
930 | | - | |
931 | 825 | | |
932 | 826 | | |
933 | 827 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
66 | | - | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
67 | 68 | | |
68 | 69 | | |
69 | 70 | | |
70 | 71 | | |
71 | 72 | | |
72 | 73 | | |
73 | 74 | | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | 75 | | |
83 | 76 | | |
84 | 77 | | |
85 | | - | |
86 | 78 | | |
87 | 79 | | |
88 | | - | |
89 | 80 | | |
90 | | - | |
91 | | - | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
92 | 84 | | |
93 | | - | |
94 | | - | |
95 | | - | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
96 | 88 | | |
97 | | - | |
98 | | - | |
| 89 | + | |
| 90 | + | |
99 | 91 | | |
100 | 92 | | |
101 | 93 | | |
102 | 94 | | |
103 | 95 | | |
104 | 96 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
113 | 103 | | |
114 | 104 | | |
115 | | - | |
| 105 | + | |
116 | 106 | | |
117 | 107 | | |
118 | 108 | | |
119 | 109 | | |
120 | 110 | | |
121 | 111 | | |
122 | 112 | | |
123 | | - | |
124 | | - | |
| 113 | + | |
125 | 114 | | |
126 | 115 | | |
127 | 116 | | |
| |||
195 | 184 | | |
196 | 185 | | |
197 | 186 | | |
198 | | - | |
| 187 | + | |
199 | 188 | | |
200 | 189 | | |
201 | 190 | | |
| |||
212 | 201 | | |
213 | 202 | | |
214 | 203 | | |
215 | | - | |
216 | | - | |
217 | | - | |
218 | | - | |
219 | | - | |
220 | | - | |
| 204 | + | |
221 | 205 | | |
222 | 206 | | |
223 | 207 | | |
| |||
233 | 217 | | |
234 | 218 | | |
235 | 219 | | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
| 220 | + | |
| 221 | + | |
242 | 222 | | |
243 | 223 | | |
244 | 224 | | |
245 | 225 | | |
246 | 226 | | |
247 | 227 | | |
248 | 228 | | |
249 | | - | |
250 | | - | |
| 229 | + | |
| 230 | + | |
251 | 231 | | |
252 | 232 | | |
| 233 | + | |
253 | 234 | | |
254 | 235 | | |
255 | 236 | | |
256 | 237 | | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
262 | 241 | | |
263 | 242 | | |
264 | 243 | | |
| |||
415 | 394 | | |
416 | 395 | | |
417 | 396 | | |
418 | | - | |
| 397 | + | |
419 | 398 | | |
420 | 399 | | |
421 | 400 | | |
| |||
446 | 425 | | |
447 | 426 | | |
448 | 427 | | |
449 | | - | |
| 428 | + | |
450 | 429 | | |
451 | 430 | | |
452 | 431 | | |
| |||
0 commit comments