On Saturday, 15 June 2013 at 11:44:03 UTC, Carlos wrote:
On Saturday, 15 June 2013 at 08:46:13 UTC, John Colvin wrote:
On Saturday, 15 June 2013 at 02:05:00 UTC, Carlos wrote:
I'm interested in this kind of functionalities; Does D have
something on this ?
I thought about something like a "eval" function that would
use
specified algorithms.
something likes this
import std.stdio, std.math, std.eval;
void main()
{
eval(Real; a+b^^x+c=56){
algor.brute(&result);
}
writeln("Positive value is : ", result);
}
It's not clear what that would do from your example. I presume
a, b and c are defined somewhere and eval solves for x?
algor.brute does the work. IF you know that algorithm you would
know what it does.
Another question would be if this way of coding makes sense to
you.
This is what the "eval" function does ( in theory ), It takes
The words : Real, Rational, Irrational or R, Q , Q' and from
there is defined which numerical group is going to be used for
the evaluation. Then it identifies the operators and variables
and defines the equation in a format like a text format with a
end file character in the end so equations can be as long as
you want. After that between {algor.(name)} in name you call
the algorithm you want to use for the evaluation there can be
predefined algorithm with D but maybe you can define your own
algorithms.
What do you think does this makes sense or would you implement
it other way ?
D provides no such thing. AFAIK, there is nothing in Phobos
provided that does it either.
It should be doable, where the second argument is a string.
Something like:
auto eq = Equation(Real, "a+b^^x+c=56");
auto result = Equation.brute();
I think it would quite a specialized numerical library though, so
I don't think it would find its way into the standard library.
I'm not sure any such D Library exists. You'll either have to
port an existing library, or link with a C/C++ existing library.