Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main() {
- printf("%f", E3(2.0, -19.0, 37.0, -14.0) ); //
- }
- // Método Newton-Raphson para pegar as raizes iniciais
- // Por rjjj
- // Método Briot Ruffini para encontrar o resto das raizes
- // Por Bruno da Silva
- stock E3(Float:a, Float:b, Float:c, Float:d) {
- new Float: Raiz = 1.0; new Float: produto = 1.0;
- for(;;)
- {
- if(floatabs((a * floatpower(Raiz, 3) + b * floatpower(Raiz, 2) + c * Raiz + d)) < 0.0001) break;
- Raiz = (2* a * floatpower(Raiz, 3) + b * floatpower(Raiz, 2) - d)/(3* a * floatpower(Raiz, 2) + 2 * b * Raiz + c);
- }
- produto = Raiz;
- new Float:na = a;
- new Float:nb = (na * produto) + b;
- new Float:nc = (nb * produto) + c;
- static Float: x[3];
- new Float:root = ((nb*nb) - (4*na*nc));
- if(root < 0.0) {
- new Float:ParteImaginaria = floatsqroot(root / -1) / (2 * na);
- new RaizesComplexas[2][20];
- x[0] = produto;
- format(RaizesComplexas[0], 20, "%f+%fi", -nb / (2 * na), ParteImaginaria);
- format(RaizesComplexas[1], 20, "%f-%fi", -nb / (2 * na), ParteImaginaria);
- printf("%f %s %s", x[0], RaizesComplexas[0], RaizesComplexas[1]);
- return true;
- }
- root = floatsqroot(root);
- x[2] = ( ((-nb) - (root)) / (2*na) );
- x[1] = ( ((-nb) + (root)) / (2*na) );
- x[0] = produto;
- printf("%f %f %f", x[0], x[1], x[2]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement