getdoubleValue() public method

public getdoubleValue ( ) : ].double[
return ].double[
コード例 #1
0
ファイル: InterpreterVisitor_.cs プロジェクト: rkpandya/pinac
        public override void VisitMatrixTransposeElement(MatrixTranspose element)
        {
            if (element.getvariable() != null)
            {
                VisitElement(element.getvariable());
                Object obj_rhs = getTopOfStack_Matrix();
                //Object result = new Object();
                MatrixVariableDeclaration mat = (MatrixVariableDeclaration)(obj_rhs);
                MatrixVariableDeclaration transpose = new MatrixVariableDeclaration();
                transpose.setType(mat.getType());
                int rhs_type = GetTypeOfElement((Element)obj_rhs);
                if (rhs_type == 3)
                {
                    if (mat.getType() == "int")
                    {
                        int[,] mat_elem = mat.getintValue();

                        int row = int.Parse(((IntegerElement)(mat.getRow())).getText());
                        int col = int.Parse(((IntegerElement)(mat.getColumn())).getText());
                        int[,] trans_elem = new int[col, row];
                        transpose.setRow(mat.getColumn());
                        transpose.setColumn(mat.getRow());
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < col; j++)
                                trans_elem[j, i] = mat_elem[i, j];
                        }
                        Console.Write("\n");
                        transpose.setIntMatrix(trans_elem);
                        int[,] trans = transpose.getintValue();
                        int trans_row = int.Parse(((IntegerElement)(transpose.getRow())).getText());
                        int trans_col = int.Parse(((IntegerElement)(transpose.getColumn())).getText());
                        Console.Write("Transpose of the given matrix is : \n\n");
                        //result("Transpose of the matrix\n");

                        for (int i = 0; i < trans_row; i++)
                        {
                            for (int j = 0; j < trans_col; j++)
                            {
                                Console.Write("\t" + trans[i, j]);
                                //      result("\t" + trans[i, j].ToString());
                            }
                            Console.Write("\n");
                            //result("\n");

                        }
                    }
                    else if (mat.getType() == "double")
                    {
                        double[,] mat_elem = mat.getdoubleValue();

                        int row = int.Parse(((IntegerElement)(mat.getRow())).getText());
                        int col = int.Parse(((IntegerElement)(mat.getColumn())).getText());
                        double[,] trans_elem = new double[col, row];
                        transpose.setRow(mat.getColumn());
                        transpose.setColumn(mat.getRow());
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < col; j++)
                                trans_elem[j, i] = mat_elem[i, j];
                        }
                        Console.Write("\n");
                        //result("\n");

                        transpose.setDoubleMatrix(trans_elem);
                        double[,] trans = transpose.getdoubleValue();
                        int trans_row = int.Parse(((IntegerElement)(transpose.getRow())).getText());
                        int trans_col = int.Parse(((IntegerElement)(transpose.getColumn())).getText());
                        //result( "Transpose of the given matrix\n");
                        Console.Write("Transpose of the given matrix is : \n\n");
                        for (int i = 0; i < trans_row; i++)
                        {
                            for (int j = 0; j < trans_col; j++)
                            {
                                Console.Write("\t" + trans[i, j]);
                                //      result( "\t" + trans[i, j].ToString());

                            }
                            Console.Write("\n");
                            //result("\n");
                        }
                    }
                    Object result = (Object)(transpose);
                    mat_stack.Push(result);

                }
            }
            else
            {
                Console.Write("Matrix needs to be decalred first.. try again.. ");
                sendres(112, "Matrix needs to be declared first.. try again..\n");
            }
        }
コード例 #2
0
ファイル: InterpreterVisitor_.cs プロジェクト: rkpandya/pinac
        public override void VisitMultiplicationElement(MultiplicationElement element)
        {
            if (element.getRhs() == null)
            {
                Element var_name = element.getLhs();
                VisitElement(var_name);
            }
            else
            {
                if (inParallelFor == 1)
                {
                    ParallelMul(element);
                    return;
                }
                else
                {
                    VisitElement(element.getLhs());
                    VisitElement(element.getRhs());

                    if (mat_stack.Count >= 2)
                    {
                        Object obj_rhs = getTopOfStack_Matrix();
                        Object obj_lhs = getTopOfStack_Matrix();
                        int rhs_type = GetTypeOfElement((Element)obj_rhs);
                        int lhs_type = GetTypeOfElement((Element)obj_lhs);
                        if (rhs_type == 3 && lhs_type == 3) // check whether both are matrices or not
                        {

                            MatrixVariableDeclaration stk_rhs = (MatrixVariableDeclaration)(obj_rhs);
                            MatrixVariableDeclaration stk_lhs = (MatrixVariableDeclaration)(obj_lhs);
                            MatrixVariableDeclaration final = new MatrixVariableDeclaration();
                            //Object output = new Object();
                            if (stk_lhs.getType() == stk_rhs.getType())
                            {
                                IntegerElement lRow = (IntegerElement)(stk_lhs.getRow());
                                IntegerElement lCol = (IntegerElement)(stk_lhs.getColumn());
                                IntegerElement rRow = (IntegerElement)(stk_rhs.getRow());
                                IntegerElement rCol = (IntegerElement)(stk_rhs.getColumn());
                                int lhs_row = int.Parse(((IntegerElement)(stk_lhs.getRow())).getText());
                                int lhs_col = int.Parse(((IntegerElement)(stk_lhs.getColumn())).getText());
                                int rhs_row = int.Parse(((IntegerElement)(stk_rhs.getRow())).getText());
                                int rhs_col = int.Parse(((IntegerElement)(stk_rhs.getColumn())).getText());
                                if (lhs_col == rhs_row)
                                {
                                    final.setRow(lRow);
                                    final.setColumn(rCol);
                                    final.setType(stk_lhs.getType());
                                    Console.Write("Multiplication..\n");
                                    string mat_type = stk_lhs.getType();
                                    if (mat_type == "int")
                                    {
                                        int[,] lhs_elem = stk_lhs.getintValue();
                                        int[,] rhs_elem = stk_rhs.getintValue();
                                        int[,] result = new int[lhs_row, rhs_col];
                                        for (int i = 0; i < lhs_row; i++)
                                        {
                                            for (int j = 0; j < rhs_col; j++)
                                            {
                                                for (int k = 0; k < lhs_col; k++)
                                                {
                                                    int res = lhs_elem[i, k] * rhs_elem[k, j];
                                                    result[i, j] = result[i, j] + res;
                                                }
                                            }
                                        }
                                        bool mat_set = final.setIntMatrix(result);
                                        int[,] output = final.getintValue();
                                        int row = int.Parse(((IntegerElement)(final.getRow())).getText());
                                        int col = int.Parse(((IntegerElement)(final.getColumn())).getText());
                                        for (int i = 0; i < row; i++)
                                        {
                                            for (int j = 0; j < col; j++)
                                            {
                                                Console.Write("\t" + output[i, j]);
                                            }
                                            Console.Write("\n");
                                        }
                                        Object final_output = (Object)(final);
                                        mat_stack.Push(final_output);
                                    }
                                    else if (mat_type == "double")
                                    {
                                        double[,] lhs_elem = stk_lhs.getdoubleValue();
                                        double[,] rhs_elem = stk_rhs.getdoubleValue();
                                        double[,] result = new double[lhs_row, rhs_col];
                                        for (int i = 0; i < lhs_row; i++)
                                        {
                                            for (int j = 0; j < rhs_col; j++)
                                            {
                                                for (int k = 0; k < lhs_col; k++)
                                                {
                                                    double res = lhs_elem[i, k] * rhs_elem[k, j];
                                                    result[i, j] = result[i, j] + res;
                                                }
                                            }
                                        }
                                        bool mat_set = final.setDoubleMatrix(result);
                                        double[,] output = final.getdoubleValue();
                                        int row = int.Parse(((IntegerElement)(final.getRow())).getText());
                                        int col = int.Parse(((IntegerElement)(final.getColumn())).getText());
                                        for (int i = 0; i < row; i++)
                                        {
                                            for (int j = 0; j < col; j++)
                                            {
                                                Console.Write("\t" + output[i, j]);
                                            }
                                            Console.Write("\n");
                                        }
                                        Object final_output = (Object)(final);
                                        mat_stack.Push(final_output);
                                    }

                                }
                                else
                                {
                                    Console.Write("Matrix dimensions does not match for multiplication.. try again.. \n");
                                    sendres(112, "Matrix dimensions does not match for multiplication.. try again.. \n");
                                }
                            }
                            else
                            {
                                Console.Write("Matrix types are different.. try again.. ");
                                sendres(112, "Matrix types are different.. try again..\n");
                            }
                        }
                        else if (lhs_type == (int)datatypes.DoubleElement && rhs_type == (int)datatypes.DoubleElement)
                            PerformDoubleMultiplication(obj_rhs, obj_lhs);
                        else if (lhs_type == (int)datatypes.IntElement && rhs_type == (int)datatypes.IntElement)
                            PerformIntMultiplication(obj_rhs, obj_lhs);
                        else
                        {
                            Console.Write("Scalar and Matrix cannot be multiplied.. \n");
                            sendres(112, "Scalar and Matrix cannot be multiplied.. ..\n");
                        }
                    }

                }
            }
            //throw new NotImplementedException();
        }
コード例 #3
0
ファイル: PrintVisitor.cs プロジェクト: shranjan/pinac
        public override void VisitMatrixElement(MatrixVariableDeclaration element)
        {
            //string variable_name = element.getVar().getText();
            string type = element.getType();
            int row = int.Parse(element.getRow().getText());
            int col = int.Parse(element.getColumn().getText());
            Console.Write("\nMatrix Type : ");
            Console.Write(type); Console.Write("\n");
            Console.Write(" Rows : "); Console.Write(row); Console.Write("\n");
            Console.Write(" Columns : "); Console.Write(col);
            interp.sendres(114,"\nMatrix Type : " + type + "\n" + "Rows:" + row.ToString() + "\n" + "Columns:" + col.ToString());
            string mat_type = element.getType();
            if (mat_type == "int")
            {
                int[,] elements = element.getintValue();
                Console.Write("\nMatrix Elements are : \n");
                interp.sendres(114, "\nMatrix Elements are : \n");
                for (int i = 0; i < row; i++)
                {
                    for (int j = 0; j < col; j++)
                    {
                        Console.Write(elements[i, j]);
                        Console.Write("\t");
                        interp.sendres(114, elements[i,j].ToString() + "\t");
                    }
                    Console.Write("\n");
                    interp.sendres(114, "\n");
                }
            }
            else if (mat_type == "double")
            {
                double[,] elemenets = element.getdoubleValue();
                Console.Write("\n Matrix Elements are : \n");
                interp.sendres(114, "\nMatrix Elements are : \n");
                for (int i = 0; i < row; i++)
                {
                    for (int j = 0; j < col; j++)
                    {
                        Console.Write(elemenets[i, j]);
                        interp.sendres(114, elemenets[i,j].ToString());
                        Console.Write("\t");
                        interp.sendres(114, "\t");
                    }
                    Console.Write("\n");
                    interp.sendres(114, "\n");
                }
            }
            Console.Write("\n");
            interp.sendres(114, "\n");

            //throw new NotImplementedException();
        }