help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Dynamically Linked Functions.


From: lash
Subject: Re: Dynamically Linked Functions.
Date: Mon, 15 Feb 1999 13:03:43 -0600 (CST)

Ohh!  I think I understand what is happening now.  The
function is being compiled as c++ code, and in the case
of pow(x(0),2) it looks at the two arguments and sees a
double? and an int.  libm normally supplies a pow function
that takes a double and a double and returns a double.

When C++ does its name mangling, in the first case it will
look for a function with a name like pow__d_di  or something
like that to indicate the return type and the argument types.
The standard math library only supplies a version of pow that
would be pow__d_dd.


When Matteo introduced the doubles, it caused everything to work
ok.  You should be able to get the same results with

dx(0) = ... *(double)pow((double)x(0),(double)2)

or it might be sufficient just to write:

dx(0) = ... *pow(x(0),2.0)

if x(0) is already double.  I think 2.0 would default to double,
but it might be a float.


Bill

> 
> 
> 
> Hi Sven and Heber,
> 
> I met the same problem with oregonator,
> and, following Heber tip, achieved to let 
> it work cutting the pow function:
> 
> dx(0) = ... *pow(x(0),2) );  // doesn't work
> 
> dx(0) = ... * x(0) * x(0) ); // ok!
> 
> But I realised (and I do not know why) 
> that there is another solution, that allows
> you to call the 'pow' function: 
> 
>     double tmp, tmp2, tmp3;
> 
>       tmp3 = 2.; 
>       tmp2 = x(0);
>       tmp = pow(tmp2,tmp3);
> 
>       dx(0) = ... * tmp );  // OK!
> 
> I couldn't obtain the same error (the one in
> the first line of code '...pow(x(0),2)' in a 
> stand-alone C program.
> I'm running RedHat 5.1, egcs-1.0.2-12, octave-2.1.9
> 
> bye,
> Matteo
> 
> 
> 
>  
> ----------------------
>       Matteo Bettella
> 
>       School of Mechanical Engineering
>       Automotive Engineering Group
>       Cranfield University
>       Cranfield 
>       Bedford MK43 0AL
> 
>       Tel.: (00)44-(0)1234-754652
>               (00)44-(0)7801-711311
>       E-mail: address@hidden
> 
> 
> 
> 
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]