// vector_test_real.edp // // Discussion: // // Demonstrate how real vectors can be defined and manipulated. // // Location: // // http://people.sc.fsu.edu/~jburkardt/freefem_src/vector_test/vector_test_real.edp // // Licensing: // // This code is distributed under the MIT license. // // Modified: // // 05 July 2015 // // Author: // // John Burkardt // cout << "\n"; cout << "vector_test_real:\n"; cout << " FreeFem++ version\n"; cout << " Demonstrate how real vectors can be defined and manipulated.\n"; load "lapack" // // Declare real vectors of length 3. // real[int] rv1(3); real[int] rv2(3); real[int] rv3(3); // // Set vectors. // rv1 = 1984.1; rv2(0) = 1.2; rv2(1) = 2.3; rv2(2) = 3.4; rv3 = [ 32.5, 10.6, 21.7 ]; cout << "\n"; cout << " rv1 = " << rv1 << "\n"; cout << " rv2 = " << rv2 << "\n"; cout << " rv3 = " << rv3 << "\n"; // // Dimension of a vector. // cout << " rv1.n = " << rv1.n << "\n"; // // Max/Min/Sum // cout << " rv3.max = " << rv3.max << "\n"; cout << " rv3.min = " << rv3.min << "\n"; cout << " rv3.sum = " << rv3.sum << "\n"; // // Norms. // cout << " rv3.l1 = " << rv3.l1 << "\n"; cout << " rv3.l2 = " << rv3.l2 << "\n"; cout << " rv3.linfty = " << rv3.linfty << "\n"; // // Resize a vector. // rv3.resize ( 5 ); rv3(3) = -5; rv3(4) = 7; cout << " After rv3.resize(5), rv3.n = " << rv3.n << "\n"; cout << " rv3 = " << rv3 << "\n"; // // Sort a vector. // rv3.sort; cout << " After rv3.sort, rv3 = " << rv3 << "\n"; // // Range // rv3(2:3) = 7; cout << " After rv3(2:3)=7, rv3 = " << rv3 << "\n"; // // Use of colon to generate a sequence of values. // rv3 = 1 : 5; cout << " After rv3=1:5, rv3 = " << rv3 << "\n"; rv3 = 1 : 2 : 9; cout << " After rv3=1:2:9, rv3 = " << rv3 << "\n"; // // Arithmetic. // rv2 = 2 * rv2; cout << " rv2 = 2 * rv2 = " << rv2 << "\n"; cout << "\n"; cout << " rv1 = " << rv1 << "\n"; // //rv1 = rv1 / 2; //cout << " rv1 = rv1 / 2 = " << rv1 << "\n"; cout << "\n"; cout << " rv1 = rv1 / 2 causes RUN TIME ERROR on some versions.\n"; cout << "\n"; rv1 = rv1 + 5 * rv2; cout << " rv1 = rv1 + 5 * rv2 = " << rv1 << "\n"; cout << "\n"; cout << " Advertised dot div doesn't work!\n"; cout << " rv1 = " << rv1 << "\n"; cout << " rv2 = " << rv2 << "\n"; rv1 = rv1 ./ rv2; cout << " rv1 = rv1 ./ rv2 = " << rv2 << "\n"; cout << "\n"; cout << " Advertised dot star doesn't work.\n"; cout << " rv1 = " << rv1 << "\n"; cout << " rv2 = " << rv2 << "\n"; rv1 = rv1 .* rv2; cout << " rv1 = rv1 .* rv2 = " << rv2 << "\n"; // // Functions? // rv1 = [ 0.0, 1.0, 2.0, 3.0 ]; cout << " rv1 = " << rv1 << "\n"; rv2.resize ( 4 ); rv2 = sqrt ( rv1 ); cout << " rv2 = sqrt ( rv1 ) = " << rv2 << "\n"; rv2 = sin ( rv1 ); cout << " rv2 = sin ( rv1 ) = " << rv2 << "\n"; rv2 = exp ( rv1 ); cout << " rv2 = exp ( rv1 ) = " << rv2 << "\n"; // // Write to file: // { cout << " Write rv3 to text file.\n"; ofstream output ( "vector_test_real.txt" ); output << rv3; } // // Read from file. // cout << " Read rv4 from text file.\n"; real[int] rv4(5); ifstream input ( "vector_test_real.txt" ); input >> rv4; cout << " rv4 = " << rv4 << "\n"; // // Terminate. // cout << "\n"; cout << "vector_test_real:\n"; cout << " Normal end of execution.\n"; exit ( 0 );