Linux build : fix undefined pragma
[scilab.git] / scilab / m4 / libsmath.m4
1 dnl ----------------------------------------------------------------------------
2 dnl @synopsis ACX_BLAS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
3 dnl
4 dnl This macro looks for a library that implements the BLAS
5 dnl linear-algebra interface (see http://www.netlib.org/blas/).
6 dnl On success, it sets the BLAS_LIBS output variable to
7 dnl hold the requisite library linkages.
8 dnl
9 dnl To link with BLAS, you should link with:
10 dnl
11 dnl     $BLAS_LIBS $LIBS $FLIBS
12 dnl
13 dnl in that order.  FLIBS is the output variable of the
14 dnl AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS),
15 dnl and is sometimes necessary in order to link with F77 libraries.
16 dnl Users will also need to use AC_F77_DUMMY_MAIN (see the autoconf
17 dnl manual), for the same reason.
18 dnl
19 dnl Many libraries are searched for, from ATLAS to CXML to ESSL.
20 dnl The user may also use --with-blas=<lib> in order to use some
21 dnl specific BLAS library <lib>.  In order to link successfully,
22 dnl however, be aware that you will probably need to use the same
23 dnl Fortran compiler (which can be set via the F77 env. var.) as
24 dnl was used to compile the BLAS library.
25 dnl
26 dnl ACTION-IF-FOUND is a list of shell commands to run if a BLAS
27 dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands
28 dnl to run it if it is not found.  If ACTION-IF-FOUND is not specified,
29 dnl the default action will define HAVE_BLAS.
30 dnl
31 dnl This macro requires autoconf 2.50 or later.
32 dnl
33 dnl @version acsite.m4,v 1.3 2002/08/02 09:28:12 steve Exp
34 dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
35 dnl
36 AC_DEFUN([ACX_BLAS], [
37 AC_PREREQ(2.50)
38 AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
39 acx_blas_ok=no
40 acx_blas_save_LIBS="$LIBS"
41
42 AC_ARG_WITH(blas-library,
43             AC_HELP_STRING([--with-blas-library=DIR], [set the path to the BLAS (refblas, Atlas, MKL...) library]))
44 saved_ldflags="$LDFLAGS"
45
46
47 if test "$with_blas_library" != no -a "$with_blas_library" != ""; then
48 LDFLAGS="$LDFLAGS -L$with_blas_library"
49 fi      
50
51 # Get fortran linker names of BLAS functions to check for.
52 AC_F77_FUNC(sgemm)
53 AC_F77_FUNC(dgemm)
54
55 LIBS="$LIBS $FLIBS"
56
57 # First, check BLAS_LIBS environment variable
58 if test $acx_blas_ok = no; then
59     if test "x$BLAS_LIBS" != x; then
60         save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
61         AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS])
62         AC_TRY_LINK_FUNC($sgemm, [acx_blas_ok=yes; BLAS_TYPE="Using BLAS_LIBS environment variable"], [BLAS_LIBS=""])
63         AC_MSG_RESULT($acx_blas_ok)
64         LIBS="$save_LIBS"
65     elif $WITH_DEVTOOLS; then # Scilab thirdparties
66         BLAS_LIBS="-L$DEVTOOLS_LIBDIR -lblas"
67         BLAS_TYPE="Generic Blas (thirdparties)"
68         acx_blas_ok=yes
69     fi
70 fi
71
72 # BLAS linked to by default?  (happens on some supercomputers)
73 if test $acx_blas_ok = no; then
74         save_LIBS="$LIBS"; LIBS="$LIBS"
75         AC_CHECK_FUNC($sgemm, [acx_blas_ok=yes; BLAS_TYPE="Linked"])
76         LIBS="$save_LIBS"
77 fi
78
79 # BLAS in OpenBlas library (http://www.openblas.net/)
80 if test $acx_blas_ok = no; then
81         AC_CHECK_LIB(openblas, $sgemm, [acx_blas_ok=yes; BLAS_TYPE="OpenBLAS"; BLAS_LIBS="-lopenblas"])
82 fi
83
84 # BLAS in ATLAS library (http://math-atlas.sourceforge.net/)
85 if test $acx_blas_ok = no; then
86         PKG_CHECK_MODULES(BLAS, atlas, [acx_blas_ok=yes; BLAS_TYPE="Atlas"], [acx_blas_ok=no])
87 fi
88 if test $acx_blas_ok = no; then
89         AC_CHECK_LIB(f77blas, $sgemm, [acx_blas_ok=yes; BLAS_TYPE="Atlas"; BLAS_LIBS="-lf77blas"], [
90                 AC_CHECK_LIB(f77blas, $sgemm, [acx_blas_ok=yes; BLAS_TYPE="Atlas"; BLAS_LIBS="-lf77blas -latlas"], [], [-latlas])])
91 fi
92
93 # BLAS in Intel MKL libraries (http://software.intel.com/en-us/articles/a-new-linking-model-single-dynamic-library-mkl_rt-since-intel-mkl-103)
94 if test $acx_blas_ok = no; then
95         AC_CHECK_LIB(mkl_rt, $sgemm, [acx_blas_ok=yes; BLAS_TYPE="MKL"; BLAS_LIBS="-lmkl_rt"])
96 fi
97
98 # BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
99 if test $acx_blas_ok = no; then
100         AC_CHECK_LIB(blas, $sgemm,
101                 [AC_CHECK_LIB(dgemm, $dgemm,
102                 [AC_CHECK_LIB(sgemm, $sgemm,
103                         [acx_blas_ok=yes; BLAS_TYPE="PhiPACK"; BLAS_LIBS="-lsgemm -ldgemm -lblas"],
104                         [], [-lblas])],
105                         [], [-lblas])])
106 fi
107
108 # BLAS in Alpha CXML library?
109 if test $acx_blas_ok = no; then
110         AC_CHECK_LIB(cxml, $sgemm, [acx_blas_ok=yes;BLAS_TYPE="Alpha CXML"; BLAS_LIBS="-lcxml"])
111 fi
112
113 # BLAS in Alpha DXML library? (now called CXML, see above)
114 if test $acx_blas_ok = no; then
115         AC_CHECK_LIB(dxml, $sgemm, [acx_blas_ok=yes;BLAS_TYPE="Alpha DXML"; BLAS_LIBS="-ldxml"])
116 fi
117
118 # BLAS in Sun Performance library?
119 if test $acx_blas_ok = no; then
120         if test "x$GCC" != xyes; then # only works with Sun CC
121                 AC_CHECK_LIB(sunmath, acosp,
122                         [AC_CHECK_LIB(sunperf, $sgemm,
123                                 [BLAS_LIBS="-xlic_lib=sunperf -lsunmath";
124                                                                 BLAS_TYPE="Sun Performance library";
125                                  acx_blas_ok=yes],[],[-lsunmath])])
126         fi
127 fi
128
129 # BLAS in SCSL library?  (SGI/Cray Scientific Library)
130 if test $acx_blas_ok = no; then
131         AC_CHECK_LIB(scs, $sgemm, [acx_blas_ok=yes; BLAS_TYPE="SCSL"; BLAS_LIBS="-lscs"])
132 fi
133
134 # BLAS in SGIMATH library?
135 if test $acx_blas_ok = no; then
136         AC_CHECK_LIB(complib.sgimath, $sgemm,
137                      [acx_blas_ok=yes; BLAS_TYPE="SGIMATH"; BLAS_LIBS="-lcomplib.sgimath"])
138 fi
139
140 # BLAS in IBM ESSL library? (requires generic BLAS lib, too)
141 if test $acx_blas_ok = no; then
142         AC_CHECK_LIB(blas, $sgemm,
143                 [AC_CHECK_LIB(essl, $sgemm,
144                         [acx_blas_ok=yes; BLAS_TYPE="IBM ESSL"; BLAS_LIBS="-lessl -lblas"],
145                         [], [-lblas $FLIBS])])
146 fi
147
148 # Generic BLAS library?
149 if test $acx_blas_ok = no; then
150         AC_CHECK_LIB(blas, $sgemm, [acx_blas_ok=yes; BLAS_TYPE="Generic Blas"; BLAS_LIBS="-lblas"])
151 fi
152
153 if test "$with_blas_library" != no -a "$with_blas_library" != ""; then
154 BLAS_LIBS="-L$with_blas_library $BLAS_LIBS"
155 fi
156
157 AC_SUBST(BLAS_LIBS)
158
159 LIBS="$acx_blas_save_LIBS"
160 LDFLAGS="$saved_ldflags"
161
162 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
163 if test x"$acx_blas_ok" = xyes; then
164         ifelse([$1],,,[$1])
165         :
166 else
167         acx_blas_ok=no
168         $2
169 fi
170 ])dnl ACX_BLAS
171
172
173
174
175
176 dnl ----------------------------------------------------------------------------
177 dnl @synopsis ACX_LAPACK([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
178 dnl
179 dnl This macro looks for a library that implements the LAPACK
180 dnl linear-algebra interface (see http://www.netlib.org/lapack/).
181 dnl On success, it sets the LAPACK_LIBS output variable to
182 dnl hold the requisite library linkages.
183 dnl
184 dnl To link with LAPACK, you should link with:
185 dnl
186 dnl     $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS
187 dnl
188 dnl in that order.  BLAS_LIBS is the output variable of the ACX_BLAS
189 dnl macro, called automatically.  FLIBS is the output variable of the
190 dnl AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS),
191 dnl and is sometimes necessary in order to link with F77 libraries.
192 dnl Users will also need to use AC_F77_DUMMY_MAIN (see the autoconf
193 dnl manual), for the same reason.
194 dnl
195 dnl The user may also use --with-lapack-library=<DIR> in order to use some
196 dnl specific LAPACK library <lib>.  In order to link successfully,
197 dnl however, be aware that you will probably need to use the same
198 dnl Fortran compiler (which can be set via the F77 env. var.) as
199 dnl was used to compile the LAPACK and BLAS libraries.
200 dnl
201 dnl ACTION-IF-FOUND is a list of shell commands to run if a LAPACK
202 dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands
203 dnl to run it if it is not found.  If ACTION-IF-FOUND is not specified,
204 dnl the default action will define HAVE_LAPACK.
205 dnl
206 dnl @version acsite.m4,v 1.3 2002/08/02 09:28:12 steve Exp
207 dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
208
209 AC_DEFUN([ACX_LAPACK], [
210 AC_REQUIRE([ACX_BLAS])
211 acx_lapack_ok=no
212
213 AC_ARG_WITH(lapack-library,
214             AC_HELP_STRING([--with-lapack-library=DIR], [set the path to the LAPACK library]))
215 saved_ldflags="$LDFLAGS"
216
217 if test "$with_lapack_library" != no -a "$with_lapack_library" != ""; then
218 LDFLAGS="$LDFLAGS -L$with_lapack_library"
219 fi
220
221
222 # Get fortran linker name of LAPACK function to check for.
223 AC_F77_FUNC(cheev)
224
225 # We cannot use LAPACK if BLAS is not found
226 if test "x$acx_blas_ok" != xyes; then
227         acx_lapack_ok=noblas
228 fi
229
230 # First, check LAPACK_LIBS environment variable
231 if test "x$LAPACK_LIBS" != x; then
232         save_LIBS="$LIBS"; LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
233         AC_MSG_CHECKING([for $cheev in $LAPACK_LIBS])
234         AC_TRY_LINK_FUNC($cheev, [acx_lapack_ok=yes; LAPACK_TYPE="LAPACK_LIBS env variable"], [LAPACK_LIBS=""])
235         AC_MSG_RESULT($acx_lapack_ok)
236         LIBS="$save_LIBS"
237         if test acx_lapack_ok = no; then
238                 LAPACK_LIBS=""
239         fi
240 elif $WITH_DEVTOOLS; then # Scilab thirdparties
241      LAPACK_LIBS="-L$DEVTOOLS_LIBDIR -llapack -lblas"
242      LAPACK_TYPE="Lapack (thirdparties)"
243      acx_lapack_ok=yes
244 fi
245
246 # LAPACK linked to by default?  (is sometimes included in BLAS lib)
247 if test $acx_lapack_ok = no; then
248         save_LIBS="$LIBS"; LIBS="$LIBS $BLAS_LIBS $FLIBS"
249         AC_CHECK_FUNC($cheev, [acx_lapack_ok=yes; LAPACK_TYPE="Default link (may be provided with BLAS)"])
250         LIBS="$save_LIBS"
251 fi
252
253 # Generic LAPACK library?
254 for lapack in lapack lapack_rs6k; do
255         if test $acx_lapack_ok = no; then
256                 save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
257                 AC_CHECK_LIB($lapack, $cheev,
258                     [acx_lapack_ok=yes; LAPACK_TYPE="Library -l$lapack"; LAPACK_LIBS="-l$lapack"], [], [$FLIBS])
259                 LIBS="$save_LIBS"
260         fi
261 done
262
263 LDFLAGS="$saved_ldflags"
264
265 if test "$with_lapack_library" != no -a "$with_lapack_library" != ""; then
266 LAPACK_LIBS="$LAPACK_LIBS -L$with_lapack_library"
267 fi
268
269 AC_SUBST(LAPACK_LIBS)
270
271 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
272 if test x"$acx_lapack_ok" = xyes; then
273         ifelse([$1],,,[$1])
274         :
275 else
276         acx_lapack_ok=no
277         $2
278 fi
279 ])dnl ACX_LAPACK
280
281
282 dnl ----------------------------------------------------------------------------
283 dnl @synopsis ACX_ARPACK([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
284 dnl
285 dnl This macro looks for a library that implements the ARPACK
286 dnl collection of Fortran77 subroutines designed to solve large 
287 dnl scale eigenvalue problems (http://forge.scilab.org/index.php/p/arpack-ng/).
288 dnl On success, it sets the ARPACK_LIBS output variable to
289 dnl hold the requisite library linkages.
290 dnl
291 dnl To link with ARPACK, you should link with:
292 dnl
293 dnl     $ARPACK_LIBS $BLAS_LIBS $LIBS $FLIBS
294 dnl
295 dnl in that order.  BLAS_LIBS is the output variable of the ACX_BLAS
296 dnl macro, called automatically.  FLIBS is the output variable of the
297 dnl AC_F77_LIBRARY_LDFLAGS macro (called if necessary by ACX_BLAS),
298 dnl and is sometimes necessary in order to link with F77 libraries.
299 dnl Users will also need to use AC_F77_DUMMY_MAIN (see the autoconf
300 dnl manual), for the same reason.
301 dnl
302 dnl The user may also use --with-arpack-library=<DIR> in order to use some
303 dnl specific ARPACK library <lib>.  In order to link successfully,
304 dnl however, be aware that you will probably need to use the same
305 dnl Fortran compiler (which can be set via the F77 env. var.) as
306 dnl was used to compile the ARPACK and BLAS libraries.
307 dnl
308 dnl ACTION-IF-FOUND is a list of shell commands to run if a ARPACK
309 dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands
310 dnl to run it if it is not found.  If ACTION-IF-FOUND is not specified,
311 dnl the default action will define HAVE_ARPACK.
312 dnl
313 dnl @version acsite.m4,v 1.3 2002/08/02 09:28:12 steve Exp
314 dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
315 dnl @author Sylvestre Ledru <sylvestre.ledru@scilab-enterprises.com>
316
317 AC_DEFUN([ACX_ARPACK], [
318 AC_REQUIRE([ACX_BLAS])
319 AC_REQUIRE([ACX_LAPACK])
320 acx_arpack_ok=no
321
322 AC_ARG_WITH(arpack-library,
323             AC_HELP_STRING([--with-arpack-library=DIR], [set the path to the ARPACK library]))
324 saved_ldflags="$LDFLAGS"
325
326 if test "$with_arpack_library" != no -a "$with_arpack_library" != ""; then
327 LDFLAGS="$LDFLAGS -L$with_arpack_library"
328 fi
329
330 if $WITH_DEVTOOLS; then # Scilab thirdparties
331     ARPACK_LIBS="-L$DEVTOOLS_LIBDIR -larpack -llapack -lblas"
332     LDFLAGS="$LDFLAGS -L$DEVTOOLS_LIBDIR"
333     acx_arpack_ok=yes
334 else
335     ARPACK_LIBS="-larpack"
336 fi
337 # Get fortran linker name of ARPACK function to check for.
338 AC_F77_FUNC(znaupd)
339
340 # We cannot use ARPACK if BLAS is not found
341 if test "x$acx_blas_ok" != xyes -a "x$acx_lapack_ok" != xyes ; then
342         acx_arpack_ok=noblas
343 fi
344
345 # First, check ARPACK_LIBS environment variable
346 if test "x$ARPACK_LIBS" != x; then
347         save_LIBS="$LIBS"; LIBS="$ARPACK_LIBS $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
348         AC_MSG_CHECKING([for $znaupd in $ARPACK_LIBS])
349         AC_TRY_LINK_FUNC($znaupd, [acx_arpack_ok=yes], [ARPACK_LIBS="-larpack"])
350         AC_MSG_RESULT($acx_arpack_ok)
351         LIBS="$save_LIBS"
352         if test acx_arpack_ok = no; then
353                 ARPACK_LIBS=""
354         fi
355 fi
356
357
358 LDFLAGS="$saved_ldflags"
359
360 if test "$with_arpack_library" != no -a "$with_arpack_library" != ""; then
361 ARPACK_LIBS="$ARPACK_LIBS -L$with_arpack_library"
362 fi
363
364 AC_SUBST(ARPACK_LIBS)
365
366 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
367 if test x"$acx_arpack_ok" = xyes; then
368         ifelse([$1],,,[$1])
369         :
370 else
371         acx_arpack_ok=no
372         $2
373 fi
374 ])dnl ACX_ARPACK
375 dnl
376 dnl Check whether ARPACK works (does not crash)
377 dnl
378 dnl Using a pure Fortran program doesn't seem to crash when linked
379 dnl with the buggy ARPACK library but the C++ program does.  Maybe
380 dnl it is the memory allocation that exposes the bug and using statically
381 dnl allocated arrays in Fortran does not?
382 dnl
383 dnl Copyright (C) 1995-2012 John W. Eaton
384 dnl
385 dnl This code is released under the GPL license.
386 dnl
387 AC_DEFUN([CHECK_ARPACK_OK], [
388   AC_LANG_PUSH(C++)
389   save_LIBS="$LIBS";
390   LIBS="$ARPACK_LIBS $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
391   save_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
392   if $WITH_DEVTOOLS; then # Scilab thirdparties
393       export LD_LIBRARY_PATH="$DEVTOOLS_LIBDIR:$LD_LIBRARY_PATH"
394   fi
395   AC_CACHE_CHECK([whether the arpack library works],
396     [lib_cv_arpack_ok], [
397       AC_RUN_IFELSE([AC_LANG_PROGRAM([[
398 // External functions from ARPACK library
399 extern "C" int
400 C2F(dnaupd) (int&, const char *, const int&, const char *,
401                            int&, const double&, double*, const int&,
402                            double*, const int&, int*, int*, double*,
403                            double*, const int&, int&, long int, long int);
404
405 extern "C" int
406 C2F(dneupd) (const int&, const char *, int*, double*,
407                            double*, double*, const int&,
408                            const double&, const double&, double*,
409                            const char*, const int&, const char *,
410                            int&, const double&, double*, const int&,
411                            double*, const int&, int*, int*, double*,
412                            double*, const int&, int&, long int,
413                            long int, long int);
414
415 extern "C" int
416 C2F(dgemv) (const char *, const int&, const int&,
417                          const double&, const double*, const int&,
418                          const double*, const int&, const double&,
419                          double*, const int&, long int);
420
421 #include <cfloat>
422
423 void
424 doit (void)
425 {
426   // Based on Octave function EigsRealNonSymmetricMatrix from liboctave/eigs-base.cc.
427
428   // Problem matrix.  See bug #31479
429   int n = 4;
430   double *m = new double [n * n];
431   m[0] = 1, m[4] = 0, m[8]  = 0, m[12] = -1;
432   m[1] = 0, m[5] = 1, m[9]  = 0, m[13] = 0;
433   m[2] = 0, m[6] = 0, m[10] = 1, m[14] = 0;
434   m[3] = 0, m[7] = 0, m[11] = 2, m[15] = 1;
435
436   double *resid = new double [4];
437
438   resid[0] = 0.960966;
439   resid[1] = 0.741195;
440   resid[2] = 0.150143;
441   resid[3] = 0.868067;
442
443   int *ip = new int [11];
444
445   ip[0] = 1;   // ishift
446   ip[1] = 0;   // ip[1] not referenced
447   ip[2] = 300; // mxiter, maximum number of iterations
448   ip[3] = 1;   // NB blocksize in recurrence
449   ip[4] = 0;   // nconv, number of Ritz values that satisfy convergence
450   ip[5] = 0;   // ip[5] not referenced
451   ip[6] = 1;   // mode
452   ip[7] = 0;   // ip[7] to ip[10] are return values
453   ip[8] = 0;
454   ip[9] = 0;
455   ip[10] = 0;
456  
457   int *ipntr = new int [14];
458
459   int k = 1;
460   int p = 3;
461   int lwork = 3 * p * (p + 2);
462
463   double *v = new double [n * (p + 1)];
464   double *workl = new double [lwork + 1];
465   double *workd = new double [3 * n + 1];
466
467   int ido = 0;
468   int info = 0;
469
470   double tol = DBL_EPSILON;
471
472   do 
473     {
474       C2F(dnaupd) (ido, "I", n, "LM", k, tol, resid, p,
475                                  v, n, ip, ipntr, workd, workl, lwork,
476                                  info, 1L, 2L);
477
478       if (ido == -1 || ido == 1 || ido == 2)
479         {
480           double *x = workd + ipntr[0] - 1;
481           double *y = workd + ipntr[1] - 1;
482
483           C2F(dgemv) ("N", n, n, 1.0, m, n, x, 1, 0.0,
484                                    y, 1, 1L);
485         }
486       else
487         {
488           if (info < 0)
489             {
490               return;  // Error
491             }
492
493           break;
494         }
495     } 
496   while (1);
497
498   int *sel = new int [p];
499
500   // The dimensions of dr and di are k+1, but k+2 avoids segfault
501   double *dr = new double [k + 1];
502   double *di = new double [k + 1];
503   double *workev = new double [3 * p];
504
505   for (int i = 0; i < k + 1; i++)
506     dr[i] = di[i] = 0.;
507
508   int rvec = 1;
509
510   double sigmar = 0.0;
511   double sigmai = 0.0;
512
513   // This is n*(k+1), but k+2 avoids segfault
514   double *z = new double [n * (k + 1)];
515
516   C2F(dneupd) (rvec, "A", sel, dr, di, z, n, sigmar,
517                              sigmai, workev, "I", n, "LM", k, tol,
518                              resid, p, v, n, ip, ipntr, workd,
519                              workl, lwork, info, 1L, 1L, 2L);
520 }
521 ]], [[
522   for (int i = 0; i < 10; i++)
523     doit ();
524 ]])],
525   [cv_lib_arpack_ok=yes],
526   [cv_lib_arpack_ok=no],
527   [cv_lib_arpack_ok=yes])])
528   LIBS="$save_LIBS"
529   export LD_LIBRARY_PATH="$save_LD_LIBRARY_PATH"
530   AC_LANG_POP(C++)
531   if test "$cv_lib_arpack_ok" = "yes"; then
532     $1
533   else
534     $2
535   fi
536 ])