@@ -172,18 +172,37 @@ On output:
172172 - 61 : A value that was judged appropriate later caused LAPACK to
173173 encounter a singularity. Try increasing the value of ` EPS ` .
174174
175- The errors 70--72 were caused by the DWNNLS library from SLATEC, which
176- is only used during extrapolation. Note that there is a known issue
177- with this library, when it is linked against included public-domain
178- copy of BLAS/LAPACK, instead of an installed version
179- (i.e., ` -lblas ` ` -llapack ` ).
180-
181- - 70 : Allocation error for the extrapolation work arrays.
182- - 71 : The SLATEC subroutine ` DWNNLS ` failed to converge during the
183- projection of an extrapolation point onto the convex hull.
184- - 72 : The SLATEC subroutine ` DWNNLS ` has reported a usage error.
185-
186- The errors 72, 80--83 should never occur, and likely indicate a
175+ The errors 70+ can occur during extrapolation outside the convex hull.
176+ Errors 71+ are received from the solver BQPD and should never occur.
177+ Since extrapolation has a much higher memory overhead than interpolation,
178+ if one of these errors occurs, it is likely that your system does not have
179+ sufficient memory to support extrapolation for the given problem size.
180+
181+ - 70 : Allocation error for the extrapolation work arrays. Note that
182+ extrapolation has a higher memory overhead than interpolation for
183+ the current version.
184+ - 71 : Unbounded problem detected. This error should never occur
185+ unless there is a user error.
186+ - 72 : bl(i) > bu(i) for some i This error should never occur
187+ unless there is a user error.
188+ - 73 : Infeasible problem detected in Phase 1 (should never occur).
189+ - 74 : Incorrect setting of m, n, kmax, mlp, mode or tol. This is
190+ extremely unlikely, but could indicate that the problem is
191+ too large for usage of BQPD.
192+ - 75 : Not enough space in lp. This error should not occur.
193+ Double-check your usage, then contact authors if the issue
194+ persists.
195+ - 76 : Not enough space for reduced Hessian matrix (increase kmax).
196+ This error should not occur. Double-check your usage, then
197+ contact authors if the issue persists.
198+ - 77 : Not enough space for sparse factors. This error should not
199+ occur, but may indicate an un-anticipated problem size.
200+ Double-check your usage then contact the authors if the issue
201+ persists.
202+ - 78 : Maximum number of unsuccessful restarts taken. This issue
203+ should never occur since the projection problem is convex.
204+
205+ The errors 80--83 should never occur, and likely indicate a
187206 compiler bug or hardware failure.
188207
189208 - 80 : The LAPACK subroutine ` DGEQP3 ` has reported an illegal value.
@@ -253,18 +272,21 @@ Optional arguments:
253272
254273 * ` EXACT ` is a logical input argument that determines whether the exact
255274 diameter should be computed and whether a check for duplicate data
256- points should be performed in advance. When ` EXACT=.FALSE. ` , the
257- diameter of ` PTS ` is approximated by twice the distance from the
258- barycenter of ` PTS ` to the farthest point in ` PTS ` , and no check is
259- done to find the closest pair of points, which could result in hard
260- to find bugs later on. When ` EXACT=.TRUE. ` , the exact diameter is
261- computed and an error is returned whenever PTS contains duplicate
262- values up to the precision ` EPS ` . By default ` EXACT=.TRUE. ` , but setting
263- ` EXACT=.FALSE. ` could result in significant speedup when ` N ` is large.
264- It is strongly recommended that most users leave ` EXACT=.TRUE. ` , as
275+ points should be performed in advance. These checks are $O(N^2 D)$ time
276+ complexity, while ` DELAUNAYSPARSE ` tends toward $O(N D^4)$ on average.
277+ By default, ` EXACT=.TRUE. ` and the exact diameter is computed and an error
278+ is returned whenever ` PTS ` contains duplicate values up to the precision
279+ ` EPS ` . When ` EXACT=.FALSE. ` , the diameter of ` PTS ` is approximated by twice
280+ the distance from the barycenter of ` PTS ` to the farthest point in ` PTS ` ,
281+ and no check is done to find the closest pair of points.
282+ When ` EXACT=.TRUE. ` , ` DELAUNAYSPARSE ` could spend over 90% of runtime
283+ calculating these constants, which are not critical to the ` DELAUNAYSPARSE `
284+ algorithm. In particular, this happens for large values of ` N ` . However,
265285 setting ` EXACT=.FALSE. ` could result in input errors that are difficult
266- to identify. Also, the diameter approximation could be wrong by up to
267- a factor of two.
286+ to identify. It is recommended that users verify the input set ` PTS `
287+ and possibly rescale ` PTS ` manually while ` EXACT=.TRUE. ` Then, when
288+ 100% sure that ` PTS ` is valid, users may choose to set ` EXACT=.FALSE. `
289+ in production runs for large values of N to achieve massive speedups.
268290
269291
270292Subroutines and functions directly referenced from BLAS are
@@ -278,16 +300,15 @@ and from LAPACK are
278300 * ` DGETRS ` ,
279301 * ` DORMQR ` .
280302
281- The SLATEC subroutine
282- * ` DWNNLS ` is also directly referenced.
303+ The BQPD driver
304+ * ` BQPD ` is also directly referenced.
283305
284- ` DWNNLS ` and all its SLATEC dependencies have been slightly edited to
285- comply with the Fortran 2008 standard, with all print statements and
286- references to stderr being commented out. For a reference to ` DWNNLS ` ,
287- see ACM TOMS Algorithm 587 (Hanson and Haskell).
306+ ` BQPD ` and all its dependencies have been flattened into a single file ` bqpd.f ` .
307+ For a reference to ` BQPD ` , see
308+ Annals of Operations Research, 46 : 307--334 (1993).
288309The module ` REAL_PRECISION ` from HOMPACK90 (ACM TOMS Algorithm 777) is
289- used for the real data type. The ` REAL_PRECISION ` module, ` DELAUNAYSPARSES ` ,
290- and ` DWNNLS ` and its dependencies comply with the Fortran 2008 standard.
310+ used for the real data type. The ` REAL_PRECISION ` module, ` DELAUNAYSPARSEP ` ,
311+ and ` BQPD ` and its dependencies comply with the Fortran 2008 standard.
291312
292313## DELAUNAYSPARSEP
293314
@@ -415,18 +436,38 @@ On output:
415436 - 61 : A value that was judged appropriate later caused LAPACK to
416437 encounter a singularity. Try increasing the value of ` EPS ` .
417438
418- The errors 70--72 were caused by the DWNNLS library from SLATEC, which
419- is only used during extrapolation. Note that there is a known issue
420- with this library, when it is linked against included public-domain
421- copy of BLAS/LAPACK, instead of an installed version
422- (i.e., ` -lblas ` ` -llapack ` ).
423-
424- - 70 : Allocation error for the extrapolation work arrays.
425- - 71 : The SLATEC subroutine ` DWNNLS ` failed to converge during the
426- projection of an extrapolation point onto the convex hull.
427- - 72 : The SLATEC subroutine ` DWNNLS ` has reported a usage error.
428-
429- The errors 72, 80--83 should never occur, and likely indicate a
439+ The errors 70+ can occur during extrapolation outside the convex hull.
440+ Errors 71+ are received from the solver BQPD and should never occur.
441+ Since extrapolation has a much higher memory overhead than interpolation,
442+ if one of these errors occurs, it is likely that your system does not have
443+ sufficient memory to support extrapolation for the given problem size.
444+
445+ - 70 : Allocation error for the extrapolation work arrays. Note that
446+ extrapolation has a higher memory overhead than interpolation for
447+ the current version.
448+ - 71 : Unbounded problem detected. This error should never occur
449+ unless there is a user error.
450+ - 72 : bl(i) > bu(i) for some i This error should never occur
451+ unless there is a user error.
452+ - 73 : Infeasible problem detected in Phase 1 (should never occur).
453+ - 74 : Incorrect setting of m, n, kmax, mlp, mode or tol. This is
454+ extremely unlikely, but could indicate that the problem is
455+ too large for usage of BQPD.
456+ - 75 : Not enough space in lp. This error should not occur.
457+ Double-check your usage, then contact authors if the issue
458+ persists.
459+ - 76 : Not enough space for reduced Hessian matrix (increase kmax).
460+ This error should not occur. Double-check your usage, then
461+ contact authors if the issue persists.
462+ - 77 : Not enough space for sparse factors. This error should not
463+ occur, but may indicate an un-anticipated problem size.
464+ Double-check your usage then contact the authors if the issue
465+ persists.
466+ - 78 : Maximum number of unsuccessful restarts taken. This issue
467+ should never occur since the projection problem is convex.
468+
469+
470+ The errors 80--83 should never occur, and likely indicate a
430471 compiler bug or hardware failure.
431472
432473 - 80 : The LAPACK subroutine ` DGEQP3 ` has reported an illegal value.
@@ -500,18 +541,21 @@ Optional arguments:
500541
501542 * ` EXACT ` is a logical input argument that determines whether the exact
502543 diameter should be computed and whether a check for duplicate data
503- points should be performed in advance. When ` EXACT=.FALSE. ` , the
504- diameter of ` PTS ` is approximated by twice the distance from the
505- barycenter of ` PTS ` to the farthest point in ` PTS ` , and no check is
506- done to find the closest pair of points, which could result in hard
507- to find bugs later on. When ` EXACT=.TRUE. ` , the exact diameter is
508- computed and an error is returned whenever PTS contains duplicate
509- values up to the precision ` EPS ` . By default ` EXACT=.TRUE. ` , but setting
510- ` EXACT=.FALSE. ` could result in significant speedup when ` N ` is large.
511- It is strongly recommended that most users leave ` EXACT=.TRUE. ` , as
544+ points should be performed in advance. These checks are $O(N^2 D)$ time
545+ complexity, while ` DELAUNAYSPARSE ` tends toward $O(N D^4)$ on average.
546+ By default, ` EXACT=.TRUE. ` and the exact diameter is computed and an error
547+ is returned whenever ` PTS ` contains duplicate values up to the precision
548+ ` EPS ` . When ` EXACT=.FALSE. ` , the diameter of ` PTS ` is approximated by twice
549+ the distance from the barycenter of ` PTS ` to the farthest point in ` PTS ` ,
550+ and no check is done to find the closest pair of points.
551+ When ` EXACT=.TRUE. ` , ` DELAUNAYSPARSE ` could spend over 90% of runtime
552+ calculating these constants, which are not critical to the ` DELAUNAYSPARSE `
553+ algorithm. In particular, this happens for large values of ` N ` . However,
512554 setting ` EXACT=.FALSE. ` could result in input errors that are difficult
513- to identify. Also, the diameter approximation could be wrong by up to
514- a factor of two.
555+ to identify. It is recommended that users verify the input set ` PTS `
556+ and possibly rescale ` PTS ` manually while ` EXACT=.TRUE. ` Then, when
557+ 100% sure that ` PTS ` is valid, users may choose to set ` EXACT=.FALSE. `
558+ in production runs for large values of N to achieve massive speedups.
515559
516560 * ` PMODE ` is an integer specifying the level of parallelism to be exploited.
517561 - If ` PMODE = 1 ` , then parallelism is exploited at the level of the loop
@@ -537,13 +581,12 @@ and from LAPACK are
537581 * ` DGETRS ` ,
538582 * ` DORMQR ` .
539583
540- The SLATEC subroutine
541- * ` DWNNLS ` is also directly referenced.
584+ The BQPD driver
585+ * ` BQPD ` is also directly referenced.
542586
543- ` DWNNLS ` and all its SLATEC dependencies have been slightly edited to
544- comply with the Fortran 2008 standard, with all print statements and
545- references to stderr being commented out. For a reference to ` DWNNLS ` ,
546- see ACM TOMS Algorithm 587 (Hanson and Haskell).
587+ ` BQPD ` and all its dependencies have been flattened into a single file ` bqpd.f ` .
588+ For a reference to ` BQPD ` , see
589+ Annals of Operations Research, 46 : 307--334 (1993).
547590The module ` REAL_PRECISION ` from HOMPACK90 (ACM TOMS Algorithm 777) is
548591used for the real data type. The ` REAL_PRECISION ` module, ` DELAUNAYSPARSEP ` ,
549- and ` DWNNLS ` and its dependencies comply with the Fortran 2008 standard.
592+ and ` BQPD ` and its dependencies comply with the Fortran 2008 standard.
0 commit comments