# [Ipopt] derivative-check errors

Andreas Waechter andreasw at watson.ibm.com
Wed Sep 9 14:17:07 EDT 2009

```Hi Sourav,

The third column in the derivative checker output is the RELATIVE error,
where the denominator is the larger of the two values - this is why it is
one.

If the values in the second column are insanely large, it probably means
that there is something wrong with the evaluation of the first
derivatives, so that the finite difference approximation for second
derivatives is giving incorrect numbers.

Since you have memory errors, I suggest you verify your code with a memory
checker first, such as valgrind on Linux, before trying to fix anything
else.

I'm not sure if I understood what you wrote about not giving structure or
values in eval_h.  You need to provide both if you are using the 2nd order
derivative checker or want Ipopt to use your second derivatives during the
optimization (i.e., if you are not using the quasi-Newton approximation).

Regards

Andreas

On Sat, 5 Sep 2009, Sourav Rakshit wrote:

> Dear all,
>
> I am solving a problem in which the Hessian is a constant matrix. When I
> put the Hessian I am getting errors like this:
>
> *             obj_hess[  859,  834] =  9.0299999999999980e-01 v  ~
> -6.6599830681424562e+13  [ 1.000e+00]
> *             obj_hess[  859,  835] =  1.2600000000000000e+00 v  ~
> -4.9849316915600086e+13  [ 1.000e+00]
> *             obj_hess[  859,  836] =  1.5810000000000000e+00 v  ~
> -4.6772604026706188e+13  [ 1.000e+00]
> *             obj_hess[  859,  837] = -2.2699999999999987e-01 v  ~
> -8.1964639092657484e+13  [ 1.000e+00]
> *             obj_hess[  859,  838] =  3.3820000000000001e+00 v  ~
> -3.3323919154622227e+13  [ 1.000e+00]
> *             obj_hess[  859,  839] =  4.6299999999999999e+00 v  ~
> -2.2568228567169316e+13  [ 1.000e+00]
> *             obj_hess[  859,  840] =  0.0000000000000000e+00    ~
> -3.4635076679925410e+13  [ 1.000e+00]
> *             obj_hess[  859,  841] =  0.0000000000000000e+00    ~
> -2.5382759707262531e+13  [ 1.000e+00]
> *             obj_hess[  859,  842] =  0.0000000000000000e+00    ~
> -1.6286066550290346e+13  [ 1.000e+00]
> *             obj_hess[  859,  843] =  0.0000000000000000e+00    ~
> -2.1178132864007645e+13  [ 1.000e+00]
> *             obj_hess[  859,  844] =  0.0000000000000000e+00    ~
> -2.2124360517394613e+13  [ 1.000e+00]
> *             obj_hess[  859,  845] =  0.0000000000000000e+00    ~
> -2.2159161074937977e+13  [ 1.000e+00]
> *             obj_hess[  859,  846] =  0.0000000000000000e+00    ~
> -2.8526221702762914e+13  [ 1.000e+00]
> *             obj_hess[  859,  847] =  0.0000000000000000e+00    ~
> -1.4620821979640861e+13  [ 1.000e+00]
> *             obj_hess[  859,  848] =  0.0000000000000000e+00    ~
> -7.7213987762791547e+13  [ 1.000e+00]
> *             obj_hess[  859,  849] =  0.0000000000000000e+00    ~
> -2.5575182033629027e+13  [ 1.000e+00]
> *             obj_hess[  859,  850] =  0.0000000000000000e+00    ~
> -2.9748799475902977e+13  [ 1.000e+00]
> *             obj_hess[  859,  851] =  0.0000000000000000e+00    ~
> -3.7042497648647523e+13  [ 1.000e+00]
> *             obj_hess[  859,  852] =  0.0000000000000000e+00    ~
> -6.3240519802614430e+13  [ 1.000e+00]
> *             obj_hess[  859,  853] =  0.0000000000000000e+00    ~
> -4.5325412696852742e+13  [ 1.000e+00]
> *             obj_hess[  859,  854] =  0.0000000000000000e+00    ~
> -4.2799068543300477e+13  [ 1.000e+00]
> *             obj_hess[  859,  855] =  0.0000000000000000e+00    ~
> -5.5375528983853742e+13  [ 1.000e+00]
> *             obj_hess[  859,  856] =  0.0000000000000000e+00    ~
> -3.6747614026011344e+13  [ 1.000e+00]
> *             obj_hess[  859,  857] =  0.0000000000000000e+00    ~
> -7.3630871482542625e+13  [ 1.000e+00]
> *             obj_hess[  859,  858] =  0.0000000000000000e+00    ~
> -3.0657023512046352e+13  [ 1.000e+00]
> *             obj_hess[  859,  859] = -1.6051100000000000e+02 v  ~
> -2.3293046799821371e+13  [ 1.000e+00]
>
> Now according to the ipopt tutorial, the 1st column is the value supplied
> by me , the second is the value calculated by ipopt by FD and the 3rd is
> the difference between them. As can be seen here all the 2nd order
> derivatives calculated by ipopt are of order e+13 which is not the case (I
> know the hessian because its a constant matrix). Further the difference
> between them is shown by ipopt to be 1.000e+00.
> The program that I use for calculating hessian has been checked by coding
> in matlab and there the programs output & FD calculations matched to an
> order of e-4.
> However, this is not the end; after calculating hessian ipopt is giving me
> the following errors:
>
> *** glibc detected *** ./seq2: double free or corruption (!prev):
> 0x0000000000f90cc0 ***
> ======= Backtrace: =========
> /lib64/libc.so.6[0x7f0809de5118]
> /lib64/libc.so.6(cfree+0x76)[0x7f0809de6c76]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt12OrigIpoptNLP20InitializeStructuresERNS_8SmartPtrINS_6VectorEEEbS4_bS4_bS4_bS4_bS4_S4_+0x19c8)[0x7f080b1f4e78]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt9IpoptData24InitializeDataStructuresERNS_8IpoptNLPEbbbbb+0x120)[0x7f080b1ca810]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt25DefaultIterateInitializer18SetInitialIteratesEv+0x3b)[0x7f080b18653b]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt14IpoptAlgorithm18InitializeIteratesEv+0x27)[0x7f080b19a177]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt14IpoptAlgorithm8OptimizeEb+0xc5)[0x7f080b1a1ae5]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication13call_optimizeEv+0x48a)[0x7f080afb850a]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication11OptimizeNLPERKNS_8SmartPtrINS_3NLPEEERNS1_INS_16AlgorithmBuilderEEE+0x170)[0x7f080afbd1c0]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication11OptimizeNLPERKNS_8SmartPtrINS_3NLPEEE+0x15)[0x7f080afbd6a5]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication12OptimizeTNLPERKNS_8SmartPtrINS_4TNLPEEE+0xd8)[0x7f080afbd7d8]
> ./seq2[0x403888]
> /lib64/libc.so.6(__libc_start_main+0xe6)[0x7f0809d8f586]
> ./seq2[0x402e19]
> ======= Memory map: ========
> 00400000-0040f000 r-xp 00000000 08:06 75202
> /home/sourav/atomistic_CE/ipopt_calc/1fc2/seq2
> 0060e000-0060f000 r--p 0000e000 08:06 75202
> /home/sourav/atomistic_CE/ipopt_calc/1fc2/seq2
> 0060f000-00610000 rw-p 0000f000 08:06 75202
> /home/sourav/atomistic_CE/ipopt_calc/1fc2/seq2
> 00610000-01653000 rw-p 00610000 00:00 0
> [heap]
> 7f0804000000-7f0804021000 rw-p 7f0804000000 00:00 0
> 7f0804021000-7f0808000000 ---p 7f0804021000 00:00 0
> 7f08091e8000-7f08095e9000 rw-p 7f08091e8000 00:00 0
> 7f0809890000-7f0809d71000 rw-p 7f0809890000 00:00 0
> 7f0809d71000-7f0809ec0000 r-xp 00000000 08:01 39254
> /lib64/libc-2.9.so
> 7f0809ec0000-7f080a0c0000 ---p 0014f000 08:01 39254
> /lib64/libc-2.9.so
> 7f080a0c0000-7f080a0c4000 r--p 0014f000 08:01 39254
> /lib64/libc-2.9.so
> 7f080a0c4000-7f080a0c5000 rw-p 00153000 08:01 39254
> /lib64/libc-2.9.so
> 7f080a0c5000-7f080a0ca000 rw-p 7f080a0c5000 00:00 0
> 7f080a0ca000-7f080a1bb000 r-xp 00000000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7f080a1bb000-7f080a3ba000 ---p 000f1000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7f080a3ba000-7f080a3c1000 r--p 000f0000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7f080a3c1000-7f080a3c3000 rw-p 000f7000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7f080a3c3000-7f080a3d6000 rw-p 7f080a3c3000 00:00 0
> 7f080a3d6000-7f080a3ec000 r-xp 00000000 08:01 1593
> /lib64/libgcc_s.so.1
> 7f080a3ec000-7f080a5ec000 ---p 00016000 08:01 1593
> /lib64/libgcc_s.so.1
> 7f080a5ec000-7f080a5ed000 r--p 00016000 08:01 1593
> /lib64/libgcc_s.so.1
> 7f080a5ed000-7f080a5ee000 rw-p 00017000 08:01 1593
> /lib64/libgcc_s.so.1
> 7f080a5ee000-7f080a643000 r-xp 00000000 08:01 39258
> /lib64/libm-2.9.so
> 7f080a643000-7f080a842000 ---p 00055000 08:01 39258
> /lib64/libm-2.9.so
> 7f080a842000-7f080a843000 r--p 00054000 08:01 39258
> /lib64/libm-2.9.so
> 7f080a843000-7f080a844000 rw-p 00055000 08:01 39258
> /lib64/libm-2.9.so
> 7f080a844000-7f080a91d000 r-xp 00000000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7f080a91d000-7f080ab1d000 ---p 000d9000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7f080ab1d000-7f080ab1e000 r--p 000d9000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7f080ab1e000-7f080ab1f000 rw-p 000da000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7f080ab1f000-7f080ab20000 rw-p 7f080ab1f000 00:00 0
> 7f080ab20000-7f080ab22000 r-xp 00000000 08:01 39257
> /lib64/libdl-2.9.so
> 7f080ab22000-7f080ad22000 ---p 00002000 08:01 39257
> /lib64/libdl-2.9.so
> /lib64/libdl-2.9.so
> /lib64/libdl-2.9.so
> 7f080ad3a000-7f080af3a000 ---p 00016000 08:01 1507
> 7f080af3a000-7f080af3b000 r--p 00016000 08:01 1507
> 7f080af3b000-7f080af3c000 rw-p 00017000 08:01 1507
> 7f080af3c000-7f080af40000 rw-p 7f080af3c000 00:00 0
> 7f080af40000-7f080b30b000 r-xp 00000000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7f080b30b000-7f080b50b000 ---p 003cb000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7f080b50b000-7f080b512000 r--p 003cb000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7f080b512000-7f080b516000 rw-p 003d2000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7f080b516000-7f080b519000 rw-p 7f080b516000 00:00 0
> 7f080b519000-7f080b537000 r-xp 00000000 08:01 492
> /lib64/ld-2.9.so
> 7f080b537000-7f080b709000 rw-p 7f080b537000 00:00 0
> 7f080b709000-7f080b736000 rw-p 7f080b709000 00:00 0
> 7f080b736000-7f080b737000 r--p 0001d000 08:01 492
> /lib64/ld-2.9.so
> 7f080b737000-7f080b738000 rw-p 0001e000 08:01 492
> /lib64/ld-2.9.so
> 7fff13722000-7fff13738000 rw-p 7ffffffe9000 00:00 0
> [stack]
> 7fff137fe000-7fff137ff000 r-xp 7fff137fe000 00:00 0
> [vdso]
> ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
> [vsyscall]
> Aborted
> ------------------------------------------------------------------------
> When I change derivative check from 2nd order to 1st order, the
> derivatives are within my allowable range of tolerance, but I get same
> sort of errors after derivative check.
>
> * grad_f[        699] = -4.0539172694440758e+01    ~
> -4.1522434912621975e+01  [ 2.368e-02]
> * grad_f[        719] = -1.4722877475944472e+02    ~
> -1.4821416698396206e+02  [ 6.648e-03]
> * grad_f[        722] = -1.6377505303903015e+02    ~
> -1.6374688129872084e+02  [ 1.720e-04]
> * grad_f[        727] = -1.5890521651240198e+02    ~
> -1.5893019735813141e+02  [ 1.572e-04]
> * grad_f[        739] = -1.4375978740513509e+02    ~
> -1.4477118384093046e+02  [ 6.986e-03]
> * grad_f[        759] = -1.0901939898187727e+02    ~
> -1.1005031410604715e+02  [ 9.368e-03]
> * grad_f[        767] = -1.2183813274347703e+02    ~
> -1.2181772035546601e+02  [ 1.676e-04]
> * grad_f[        779] = -3.6859019924140711e+02    ~
> -3.6959390854462981e+02  [ 2.716e-03]
> * grad_f[        839] = -2.6172559448786245e+02    ~
> -2.6272755349054933e+02  [ 3.814e-03]
> * grad_f[        859] = -2.7016352501996431e+02    ~
> -2.7116984711028636e+02  [ 3.711e-03]
>
> *** glibc detected *** ./seq1: double free or corruption (!prev):
> 0x0000000000f90cc0 ***
> ======= Backtrace: =========
> /lib64/libc.so.6[0x7fddffceb118]
> /lib64/libc.so.6(cfree+0x76)[0x7fddffcecc76]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt12OrigIpoptNLP20InitializeStructuresERNS_8SmartPtrINS_6VectorEEEbS4_bS4_bS4_bS4_bS4_S4_+0x19c8)[0x7fde010fae78]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt9IpoptData24InitializeDataStructuresERNS_8IpoptNLPEbbbbb+0x120)[0x7fde010d0810]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt25DefaultIterateInitializer18SetInitialIteratesEv+0x3b)[0x7fde0108c53b]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt14IpoptAlgorithm18InitializeIteratesEv+0x27)[0x7fde010a0177]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt14IpoptAlgorithm8OptimizeEb+0xc5)[0x7fde010a7ae5]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication13call_optimizeEv+0x48a)[0x7fde00ebe50a]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication11OptimizeNLPERKNS_8SmartPtrINS_3NLPEEERNS1_INS_16AlgorithmBuilderEEE+0x170)[0x7fde00ec31c0]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication11OptimizeNLPERKNS_8SmartPtrINS_3NLPEEE+0x15)[0x7fde00ec36a5]
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0(_ZN5Ipopt16IpoptApplication12OptimizeTNLPERKNS_8SmartPtrINS_4TNLPEEE+0xd8)[0x7fde00ec37d8]
> ./seq1[0x403888]
> /lib64/libc.so.6(__libc_start_main+0xe6)[0x7fddffc95586]
> ./seq1[0x402e19]
> ======= Memory map: ========
> 00400000-0040f000 r-xp 00000000 08:06 95533
> /home/sourav/atomistic_CE/ipopt_calc/1fc2/seq1
> 0060e000-0060f000 r--p 0000e000 08:06 95533
> /home/sourav/atomistic_CE/ipopt_calc/1fc2/seq1
> 0060f000-00610000 rw-p 0000f000 08:06 95533
> /home/sourav/atomistic_CE/ipopt_calc/1fc2/seq1
> 00610000-01653000 rw-p 00610000 00:00 0
> [heap]
> 7fddf8000000-7fddf8021000 rw-p 7fddf8000000 00:00 0
> 7fddf8021000-7fddfc000000 ---p 7fddf8021000 00:00 0
> 7fddff0ee000-7fddff4ef000 rw-p 7fddff0ee000 00:00 0
> 7fddff796000-7fddffc77000 rw-p 7fddff796000 00:00 0
> 7fddffc77000-7fddffdc6000 r-xp 00000000 08:01 39254
> /lib64/libc-2.9.so
> 7fddffdc6000-7fddfffc6000 ---p 0014f000 08:01 39254
> /lib64/libc-2.9.so
> 7fddfffc6000-7fddfffca000 r--p 0014f000 08:01 39254
> /lib64/libc-2.9.so
> 7fddfffca000-7fddfffcb000 rw-p 00153000 08:01 39254
> /lib64/libc-2.9.so
> 7fddfffcb000-7fddfffd0000 rw-p 7fddfffcb000 00:00 0
> 7fddfffd0000-7fde000c1000 r-xp 00000000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7fde000c1000-7fde002c0000 ---p 000f1000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7fde002c0000-7fde002c7000 r--p 000f0000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7fde002c7000-7fde002c9000 rw-p 000f7000 08:01 24016
> /usr/lib64/libstdc++.so.6.0.10
> 7fde002c9000-7fde002dc000 rw-p 7fde002c9000 00:00 0
> 7fde002dc000-7fde002f2000 r-xp 00000000 08:01 1593
> /lib64/libgcc_s.so.1
> 7fde002f2000-7fde004f2000 ---p 00016000 08:01 1593
> /lib64/libgcc_s.so.1
> 7fde004f2000-7fde004f3000 r--p 00016000 08:01 1593
> /lib64/libgcc_s.so.1
> 7fde004f3000-7fde004f4000 rw-p 00017000 08:01 1593
> /lib64/libgcc_s.so.1
> 7fde004f4000-7fde00549000 r-xp 00000000 08:01 39258
> /lib64/libm-2.9.so
> 7fde00549000-7fde00748000 ---p 00055000 08:01 39258
> /lib64/libm-2.9.so
> 7fde00748000-7fde00749000 r--p 00054000 08:01 39258
> /lib64/libm-2.9.so
> 7fde00749000-7fde0074a000 rw-p 00055000 08:01 39258
> /lib64/libm-2.9.so
> 7fde0074a000-7fde00823000 r-xp 00000000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7fde00823000-7fde00a23000 ---p 000d9000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7fde00a23000-7fde00a24000 r--p 000d9000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7fde00a24000-7fde00a25000 rw-p 000da000 08:01 52452
> /usr/lib64/libgfortran.so.3.0.0
> 7fde00a25000-7fde00a26000 rw-p 7fde00a25000 00:00 0
> 7fde00a26000-7fde00a28000 r-xp 00000000 08:01 39257
> /lib64/libdl-2.9.so
> 7fde00a28000-7fde00c28000 ---p 00002000 08:01 39257
> /lib64/libdl-2.9.so
> 7fde00c28000-7fde00c29000 r--p 00002000 08:01 39257
> /lib64/libdl-2.9.so
> 7fde00c29000-7fde00c2a000 rw-p 00003000 08:01 39257
> /lib64/libdl-2.9.so
> 7fde00c2a000-7fde00c40000 r-xp 00000000 08:01 1507
> 7fde00c40000-7fde00e40000 ---p 00016000 08:01 1507
> 7fde00e40000-7fde00e41000 r--p 00016000 08:01 1507
> 7fde00e41000-7fde00e42000 rw-p 00017000 08:01 1507
> 7fde00e42000-7fde00e46000 rw-p 7fde00e42000 00:00 0
> 7fde00e46000-7fde01211000 r-xp 00000000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7fde01211000-7fde01411000 ---p 003cb000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7fde01411000-7fde01418000 r--p 003cb000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7fde01418000-7fde0141c000 rw-p 003d2000 08:06 45979
> /home/sourav/IPOPT/CoinIpopt/lib/libipopt.so.0.0.0
> 7fde0141c000-7fde0141f000 rw-p 7fde0141c000 00:00 0
> 7fde0141f000-7fde0143d000 r-xp 00000000 08:01 492
> /lib64/ld-2.9.so
> 7fde0143d000-7fde0160f000 rw-p 7fde0143d000 00:00 0
> 7fde0160f000-7fde0163c000 rw-p 7fde0160f000 00:00 0
> 7fde0163c000-7fde0163d000 r--p 0001d000 08:01 492
> /lib64/ld-2.9.so
> 7fde0163d000-7fde0163e000 rw-p 0001e000 08:01 492
> /lib64/ld-2.9.so
> 7fff09628000-7fff0963e000 rw-p 7ffffffe9000 00:00 0
> [stack]
> 7fff097fe000-7fff097ff000 r-xp 7fff097fe000 00:00 0
> [vdso]
> ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
> [vsyscall]
> Aborted
> --------------------------------------------------------------
> However, if I switch off derivative check, optimization goes ahead and
> gives me fine results.
> Now, if in eval_h function I do not provide any sparsity structure of
> hessian or any values but only state :
>
> Ipopt::TNLP::eval_h(n,x,new_x,obj_factor,m,lambda,new_lambda,nele_hess,iRow,jCol,values);
>
> First order derivative check gives no errors and optimization progress
> fine.If I put derivative check to second order, then I get errors for
> derivative check (which I should get as I am providing no hessian) but
> after that optimization starts and finishes the job.
>
> I am very much perplexed by these results and will be thankful if anybody
> can put light on them.
>
> sincerely,
> Sourav Rakshit
>
>
>
>
>
> --
> S.Rakshit
> PhD student
> Mechanical Engg. Dept.
> IISc
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>

```