hello everyone i have this code that makes functions in mathematics but with this function the result is wrong o.O
x=0
"-3*X^2-16*X+2"
Code:
public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        engine.put("X", 0);
        Object operation = engine.eval("-3*X^2-16*X+2");
        //Object operation2 = engine.eval("(X+3)");
        System.out.println("Evaluado operacion 1: " + operation);
        //System.out.println("Evaluado operacion 2: " + operation2);
    }
the result is 2 but i get 4
Evaluado operacion 1: 4
i have other code that i made
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package gustavo_santa;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.swing.JOptionPane;
/**
 *
 * @author osmarvirux
 */
public class SerieB {
    //xi and x4
    int xi;
    int x4;
    //f(x) function variables
    String positive_negative;
    int num_one;
    int elevation_one;
    String add_subtract_one;
    int num_two;
    int elevation_two;
    String add_subtract_two;
    int num_three;
    //results
    String xi_result;
    String x4_result;
    public SerieB(int xi, int x4, String positive_negative, int num_one, int elevation_one, String add_subtract_one, int num_two, int elevation_two, String add_subtract_two, int num_three) {
        this.xi = xi;
        this.x4 = x4;
        this.positive_negative = positive_negative;
        this.num_one = num_one;
        this.elevation_one = elevation_one;
        this.add_subtract_one = add_subtract_one;
        this.num_two = num_two;
        this.elevation_two = elevation_two;
        this.add_subtract_two = add_subtract_two;
        this.num_three = num_three;
    }
    public void Procedure_xi(){
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        if (positive_negative == "-"){
           try {
            xi_result=(num_one*(Math.pow(xi, elevation_one)))+add_subtract_one+(num_two*(Math.pow(xi, elevation_two)))
                    +add_subtract_two+num_three;
            Object result = engine.eval(xi_result);
            System.out.println(xi_result+" = "+result);
            } catch(ScriptException se) {
                se.printStackTrace();
            }           
        }else{
             try {
            xi_result=((-num_one*(Math.pow(xi, elevation_one)))+add_subtract_one+(num_two*(Math.pow(xi, elevation_two)))
            +add_subtract_two+num_three);
            Object result = engine.eval(xi_result);
            System.out.println(xi_result+" = "+result);
            } catch(ScriptException se) {
                se.printStackTrace();
            }       
        }
    }
    public void Procedure_x4(){
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        if (positive_negative == "-"){
           try {
            x4_result=(num_one*(Math.pow(x4, elevation_one)))+add_subtract_one+(num_two*(Math.pow(x4, elevation_two)))
                    +add_subtract_two+num_three;
            Object result = engine.eval(x4_result);
            System.out.println(x4_result+" = "+result);
            } catch(ScriptException se) {
                se.printStackTrace();
            }           
        }else{
             try {
            x4_result=((-num_one*(Math.pow(x4, elevation_one)))+add_subtract_one+(num_two*(Math.pow(x4, elevation_two)))
            +add_subtract_two+num_three);
            Object result = engine.eval(x4_result);
            System.out.println(x4_result+" = "+result);
            } catch(ScriptException se) {
                se.printStackTrace();
            }       
        }
    }
    public static void main(String[] args){
        //-3x^2-16x+2
        SerieB obj = new SerieB(0, 1, "+", -3, 2, "-", 16, 1, "+", 2);
        obj.Procedure_xi();
        obj.Procedure_x4();
    }
}
the result with this code is 2 but i wanna use
ScriptEngineManager manager = new ScriptEngineManager();ScriptEngineManager manager = new ScriptEngineManager();
because is a library and i think is more precise and i dont wanna use my code because there are many lines and i dont know if is 100% efficient. someone can help me? or give me a recomendation to resolve this mathematic functions? thanks a lot
 
     
     
     
    