From 45b8ddd2e44a2952de9f0441bccca74284d3a168 Mon Sep 17 00:00:00 2001 From: "John F. Gibson" Date: Fri, 20 Oct 2017 09:02:15 -0400 Subject: [PATCH] Restructuring, moved KS demo to 2-numeric-like-matlab.ipynb --- 1-introduction.ipynb | 10 +- 2-numeric-like-matlab.ipynb | 584 +---- 3-fast-as-C.ipynb | 64 +- 4-just-in-time-compilation.ipynb | 281 ++- 5-julia-goes-beyond.ipynb | 2127 ++++++++--------- 6-conclusions.ipynb | 48 +- {ks-benchmark => ks-codes}/cputime.asc | 0 {ks-benchmark => ks-codes}/ks-r2c.f90 | 0 {ks-benchmark => ks-codes}/ks.mod | Bin {ks-benchmark => ks-codes}/ksbenchmark.c | 0 {ks-benchmark => ks-codes}/ksbenchmark.cpp | 0 {ks-benchmark => ks-codes}/ksbenchmark.f90 | 0 {ks-benchmark => ks-codes}/ksbenchmark.jl | 0 {ks-benchmark => ks-codes}/ksbenchmark.m | 0 {ks-benchmark => ks-codes}/ksbenchmark.py | 0 {ks-benchmark => ks-codes}/ksintegrate.cpp | 0 {ks-benchmark => ks-codes}/ksintegrate.f90 | 0 {ks-benchmark => ks-codes}/ksintegrate.m | 0 {ks-benchmark => ks-codes}/ksintegrate.py | 0 .../ksintegrateInplace.jl | 0 .../ksintegrateNaive.jl | 0 .../ksintegrateUnrolled.jl | 0 {ks-benchmark => ks-codes}/linecount.asc | 0 .../stripped/ksstripped.cpp | 0 .../stripped/ksstripped.f90 | 0 .../stripped/ksstripped.m | 0 .../stripped/ksstripped.py | 0 .../stripped/ksstrippedInplace.jl | 0 .../stripped/ksstrippedNaive.jl | 0 .../stripped/ksstrippedUnrolled.jl | 0 30 files changed, 1300 insertions(+), 1814 deletions(-) rename {ks-benchmark => ks-codes}/cputime.asc (100%) rename {ks-benchmark => ks-codes}/ks-r2c.f90 (100%) rename {ks-benchmark => ks-codes}/ks.mod (100%) rename {ks-benchmark => ks-codes}/ksbenchmark.c (100%) rename {ks-benchmark => ks-codes}/ksbenchmark.cpp (100%) rename {ks-benchmark => ks-codes}/ksbenchmark.f90 (100%) rename {ks-benchmark => ks-codes}/ksbenchmark.jl (100%) rename {ks-benchmark => ks-codes}/ksbenchmark.m (100%) rename {ks-benchmark => ks-codes}/ksbenchmark.py (100%) rename {ks-benchmark => ks-codes}/ksintegrate.cpp (100%) rename {ks-benchmark => ks-codes}/ksintegrate.f90 (100%) rename {ks-benchmark => ks-codes}/ksintegrate.m (100%) rename {ks-benchmark => ks-codes}/ksintegrate.py (100%) rename {ks-benchmark => ks-codes}/ksintegrateInplace.jl (100%) rename {ks-benchmark => ks-codes}/ksintegrateNaive.jl (100%) rename {ks-benchmark => ks-codes}/ksintegrateUnrolled.jl (100%) rename {ks-benchmark => ks-codes}/linecount.asc (100%) rename {ks-benchmark => ks-codes}/stripped/ksstripped.cpp (100%) rename {ks-benchmark => ks-codes}/stripped/ksstripped.f90 (100%) rename {ks-benchmark => ks-codes}/stripped/ksstripped.m (100%) rename {ks-benchmark => ks-codes}/stripped/ksstripped.py (100%) rename {ks-benchmark => ks-codes}/stripped/ksstrippedInplace.jl (100%) rename {ks-benchmark => ks-codes}/stripped/ksstrippedNaive.jl (100%) rename {ks-benchmark => ks-codes}/stripped/ksstrippedUnrolled.jl (100%) diff --git a/1-introduction.ipynb b/1-introduction.ipynb index d1de576..6b00c41 100644 --- a/1-introduction.ipynb +++ b/1-introduction.ipynb @@ -15,12 +15,12 @@ "source": [ "## Julia \n", "\n", - " * a new open-source scientific programming language\n", - " * does interactive numerics and graphics like Matlab\n", - " * runs as fast as C, Fortran\n", - " * modern, dynamic, high-level, general-purpose like Python\n", + " * new open-source scientific programming language\n", + " * interactive numerics and graphics like Matlab\n", + " * as fast as C, Fortran\n", + " * extensible, dynamic, general-purpose like Python\n", " * metaprogramming power of LISP\n", - " * open-ended innovation" + " * potential game-changer in scientific computing" ] }, { diff --git a/2-numeric-like-matlab.ipynb b/2-numeric-like-matlab.ipynb index 5751a75..6bfc091 100644 --- a/2-numeric-like-matlab.ipynb +++ b/2-numeric-like-matlab.ipynb @@ -6,9 +6,9 @@ "source": [ "# Julia does interactive numerics like Matlab\n", "\n", - "Interactive numerical and graphical tinkering, plus\n", + "Interactive numerical and graphical computation, plus\n", " * familiar syntax, improved\n", - " * rich numeric types: rational numbers, arbitrary-precision math\n", + " * rich numeric types: rational numbers, arbitrary-precision numbers\n", " * metaprogramming: transforming then evaluating chunks of code\n", " * Unicode variables and source text: $\\alpha \\; \\beta \\; \\gamma \\; \\aleph \\; x_j \\; A_{ij} \\; \\oplus \\; \\ldots$\n", " * notebook interface with embedded graphics and LaTeX: $\\text{erf}(x) = \\pi^{-1/2} \\int_{-x}^x e^{-t^2} dt$\n", @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -28,13 +28,13 @@ "data": { "text/plain": [ "4×4 Array{Float64,2}:\n", - " 1.57977 -0.0284909 0.0883973 -1.6861 \n", - " 1.12507 -0.738548 0.592905 -0.0494453\n", - " -0.243772 -0.81507 -1.23417 1.94334 \n", - " -0.763745 -0.237987 1.22853 -0.340448 " + " -1.06133 0.455741 -0.100564 1.05912 \n", + " 0.821417 1.28116 1.00801 0.546433\n", + " 0.781779 0.89757 1.13523 0.185553\n", + " 0.187522 -1.87101 -1.06749 0.287633" ] }, - "execution_count": 2, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -55,13 +55,13 @@ "data": { "text/plain": [ "4-element Array{Float64,1}:\n", - " 1.57977 \n", - " 1.12507 \n", - " -0.243772\n", - " -0.763745" + " -1.06133 \n", + " 0.821417\n", + " 0.781779\n", + " 0.187522" ] }, - "execution_count": 3, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -73,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -82,13 +82,13 @@ "data": { "text/plain": [ "4-element Array{Float64,1}:\n", - " -0.842261 \n", - " 0.0363522\n", - " 0.987869 \n", - " 0.534291 " + " -0.0351173\n", + " -0.60573 \n", + " -0.535406 \n", + " -1.23662 " ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -110,13 +110,13 @@ "data": { "text/plain": [ "4-element Array{Float64,1}:\n", - " -0.531955 \n", - " -0.916427 \n", - " -0.0697371\n", - " 0.0129537" + " -0.628959\n", + " 0.68117 \n", + " -0.414284\n", + " -0.995873" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -128,7 +128,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -137,28 +137,28 @@ "name": "stdout", "output_type": "stream", "text": [ - "norm(A * x̂ - b) = 2.7194799110210365e-16\n" + "norm(A * x̂ - b) = 3.3306690738754696e-16\n" ] }, { "data": { "text/plain": [ - "2.7194799110210365e-16" + "3.3306690738754696e-16" ] }, - "execution_count": 22, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute error\n", - "@show norm(A*x̂ - b)" + "@show norm(A*x̂ - b) # @show macro: print expression = " ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -169,7 +169,7 @@ "2.220446049250313e-16" ] }, - "execution_count": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -181,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -189,10 +189,10 @@ { "data": { "text/plain": [ - "9.510622984692173" + "13.716464366214403" ] }, - "execution_count": 15, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -202,9 +202,16 @@ "cond(A)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SVD and eigenvalues" + ] + }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -213,7 +220,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "σ = [3.15231, 1.99652, 1.32968, 0.331452]\n" + "σ = [3.12138, 1.64675, 1.0432, 0.227565]\n" ] } ], @@ -224,7 +231,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -233,35 +240,35 @@ "data": { "text/plain": [ "32-element Array{Complex{Float64},1}:\n", - " 0.975049+0.36824im \n", - " 0.975049-0.36824im \n", - " -0.370201+0.97752im \n", - " -0.370201-0.97752im \n", - " 0.546149+0.783513im\n", - " 0.546149-0.783513im\n", - " 0.0416997+0.904293im\n", - " 0.0416997-0.904293im\n", - " -0.803315+0.4621im \n", - " -0.803315-0.4621im \n", - " -0.24694+0.724944im\n", - " -0.24694-0.724944im\n", - " -0.760562+0.15964im \n", + " -1.14239+0.118269im\n", + " -1.14239-0.118269im\n", + " -0.873745+0.485744im\n", + " -0.873745-0.485744im\n", + " 0.95936+0.0im \n", + " 0.92448+0.212287im\n", + " 0.92448-0.212287im\n", + " 0.673986+0.533083im\n", + " 0.673986-0.533083im\n", + " 0.338716+0.786636im\n", + " 0.338716-0.786636im\n", + " -0.438346+0.756205im\n", + " -0.438346-0.756205im\n", " ⋮ \n", - " -0.304846-0.459339im\n", - " 0.631438+0.408394im\n", - " 0.631438-0.408394im\n", - " 0.310531+0.466017im\n", - " 0.310531-0.466017im\n", - " 0.604046+0.0im \n", - " 0.528621+0.0im \n", - " 0.457018+0.0im \n", - " 0.110231+0.38761im \n", - " 0.110231-0.38761im \n", - " -0.427149+0.0im \n", - " -0.0450963+0.0im " + " 0.259182-0.414416im\n", + " 0.434993+0.0im \n", + " -0.09899+0.528763im\n", + " -0.09899-0.528763im\n", + " -0.560704+0.0im \n", + " -0.331725+0.363972im\n", + " -0.331725-0.363972im\n", + " -0.285784+0.107731im\n", + " -0.285784-0.107731im\n", + " -0.0416672+0.180437im\n", + " -0.0416672-0.180437im\n", + " 0.00503397+0.0im " ] }, - "execution_count": 6, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -273,30 +280,20 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAI6CAYAAAAuSOLAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt8FPW9//H3DIm5sUYF0RCwCSoSEctFqAFagSJEkQAGUaqClKPt6YlpA9bqL7FJkbS2AjHVcFraHgFR1BIVqAWUAgoYEQEvtStQAUWJFwTiErks7Pf3h2RL2A0Jue1m9vV8PHg89DszO5+d2ey89zvfmbGMMUYAAAAOZIe6AAAAgOZC0AEAAI5F0AEAAI5F0AEAAI5F0AEAAI5F0AEAAI5F0AEAAI5F0AEAAI5F0AEAAI5F0IFjDRo0SLbNR1ySPvzwQ9m2rR/+8IehLqXFfPbZZ5o4caI6d+6sqKgotWnTRl999VWoy2qUV155RbZta9q0aaEuJSKwvZ0hKtQFAM3FsiyCTgSbOHGiVq5cqfHjx+uSSy6RbduKjY0NdVloQYWFhZo2bZrWrFmj733vew16DcuyZFlWE1eGlkTQgWM98cQT+vrrr0NdBkLA6/Vq5cqVuvbaa/XEE0+EuhyESGNDyne+8x253W61b9++CatCSyPowLE6deoU6hIQIhUVFfL5fEpKSgp1KQihxj6zOjY2Vl27dm2iahAq9OujVdmwYYPGjh2rpKQkxcTE6KKLLtKPf/xjVVRUBMxb2xido0ePqrCwUBdffLFiY2PVpUsXPfDAAzp69Khs29aQIUMCljl+/Lhmz56t9PR0JSYmKiEhQb1791ZpaWnAl+nJ42E+/PBD3XLLLTr//PMVFxenvn376sUXX6wx/0MPPSTbtvXYY48Ffc8VFRVq06aNvvOd79RomzZtmgYOHOjfFsnJybr11lv1/vvv12tbnm4bSdK8efNk27bmz58fMO2TTz5Rdna2fxu2b99eo0aN0ptvvhkw78GDB/Xggw+qR48eSkxM1Nlnn61LLrlEt9xyi7Zs2VLvWv/9739rwoQJ6tSpk//9Tpw4Uf/+979rzJeamqqUlBRZlqW5c+fKtu16j0+q3v+fffaZ/uu//kudOnVSVFSUfxts375d9913n/r27asOHTooNjZWKSkp+tGPfqRPPvkk4PVOHuPx9ttva8SIETr33HOVkJCgQYMGqby8PGgdn3/+uSZPnqwLL7xQ8fHx6tWrV9D90JDtI31zSse2bb366qtauHChrrrqKiUkJCg5OVlTp07V0aNHJUmrVq3S4MGDlZiYqPPOO08TJkzQvn376tyOzbWeNWvW6K677lL37t2VmJio+Ph49ejRQ9OmTdORI0dqzJuamuofW1P9ObdtW23atPHPc8cdd8i2be3atUuPPvqovv3tbys+Pt7/HRBsjM7zzz8v27bVv39/HT9+vMY6//nPfyo+Pl6dOnXS3r17672d0Lzo0UGr8fjjj+uuu+5SbGysMjMz1blzZ23fvl1/+ctftHTpUm3YsKFGL05t3dY33nij/v73v6tr1666++675fV6NW/ePL333ntB13vs2DHdcMMNeumll9StWzfdeuutio2N1erVq3X33XfrjTfe0Lx58wKW27Vrl/r166eLL77Y/8X9zDPPaPTo0Vq5cqWuueYaSdKECROUn5+vefPmKTs7O+B1qk+93HHHHf62V199Vb/73e80ePBgjR07Vm3bttX27dtVVlamJUuW6LXXXlOPHj3q3KZ1de0Hm7Z582YNGzZMBw4c0PDhw5WVlaW9e/fqhRde0MCBA/XCCy8oIyPDP//w4cNVXl6u/v37684771RUVJR2797tHzfRq1evOuvcuHGjhg4dqqqqKmVmZuryyy/X+++/ryeffFKLFy/WqlWr1Lt3b0lSbm6udu3apUceeUQ9e/bU6NGjJUk9e/ascz2StG/fPl199dVyuVzKysqSbdu64IILJEnPPfec5syZo8GDB2vAgAE666yz9N577+nPf/6z/va3v+nNN98M2ou0ceNG/fa3v/Vvg48++kiLFi3S0KFD9dZbb+nSSy+tsf709HTt2rVL3/3udzVgwABVVFTov//7v3XttdcG3Sdnsn2k/+z33//+91q+fLlGjx6twYMH66WXXlJxcbH27dunUaNG6ZZbbtENN9ygH/3oR3rttde0YMECffnllwFhvTZNvZ7f/va32rp1q/r3768bbrhBhw8f1vr161VYWKhXXnlFK1eu9G+f3NxcvfDCC3rllVd0xx13KCUlxV/TqfXl5ORo3bp1GjFihEaMGFEjDJ1qzJgxys7O1mOPPaa8vDw99NBDkqRDhw7p5ptvltfr1ZNPPsnprnBigFZg27Zt5qyzzjJdu3Y1FRUVNaatXr3atGnTxtx444012gcNGmRs267RNn/+fGNZlhk0aJDxer3+9srKStOtWzdj27YZPHhwjWUKCgqMZVnmpz/9qfH5fP52n89nJk+ebGzbNkuWLPG379q1y1iWZWzbNg8++GCN11qxYoWxLMuMGDGiRvvw4cONbdvmvffeC3jvl19+uYmJiTH79u3zt33xxRfm4MGDAfO+8847pm3btub666+v0V5d06RJk+rcRtXmzp1rbNs28+bN87cdO3bMXHzxxSYuLs6sXbu2xvwVFRUmOTnZdOzY0Rw9etQYY8y7775rLMsyWVlZQddx4MCBoO2nqt43CxcurNH+7LPPGsuyTFpaWr3eb12q99sdd9xhjh8/HjB9z549/vd2spdfftm0adPG/OQnP6nRvmbNGv9rzp8/v8a0P/7xj8ayLPM///M/NdrvvPNOY9u2mTp1ao32TZs2mejoaGPbtvnVr35VY9qZbp/CwkJjWZY555xzzNatW/3tR44cMd27dzdt2rQx7du3D9jH1157rbFt27z99tsB2yCYpl7Pzp07g67nl7/8pbFt2zz77LMB67dt27zyyitBl7vjjjuMZVmmU6dO5sMPPwyYXr3/Tt3eR44cMb179zZt2rQxK1as8L9WsH2D0CPooFX42c9+ZmzbNn//+9+DTh8zZoyJjo6ucfAPdhD//ve/b2zbNuvWrQt4jSeffNJYllUj6Ph8PtO+fXvTsWPHoAe+AwcOGNu2zc033+xvqz7Ipqam1ghG1b71rW+Z888/v0bbU089ZSzLMvfee2+N9jfffNNYlmXGjh0b9H0Hk5mZaeLi4syxY8cCamps0Fm8eHHQOquVlJQY27bNsmXLjDH/CTq33nprves/1fr1641lWWbgwIFBp3/3u981tm3XOFg2JujExsaaL7744ozrvPLKK83FF19co636QPm9730vYH6v12uio6NN3759a7QlJCSYxMRE89VXXwUsE+xg2pDtUx1ACgoKAuafNm2asSzL3HHHHQHT5s2bFzS01aal1rN3715jWZaZPHlywPrrCjq2bZtHH3006PTago4xxmzfvt24XC5zwQUXmBkzZvi/O4L9zSO0OHWFVuH111+X9M05+jfeeCNg+ueff67jx49r27Ztpz0V8tZbb8m2baWnpwdMGzhwYEDbtm3b9OWXX6pr16568MEHA6YbYxQXFye32x0wrWfPnkFPM3Tu3Nn/fqqNGTNGiYmJWrBggR566CH/cnPnzpVlWTVOW1V78cUX9Yc//EGbNm3S3r17dezYMf80y7K0d+9e/ymXplI9pmTXrl361a9+FTB9+/btMsbI7XYrIyNDl19+uXr27KmFCxdq165dGjVqlAYOHKirrrpK0dHR9Vrn5s2bJUmDBw8OOn3IkCFav369tmzZEnQfnqmUlJTTnnZYsGCB5s2bp7ffflv79++vMU4jJiYm6DJ9+vQJaIuKitIFF1yg/fv3+9vef/99ff311/re974nl8sVsMygQYMCTpM2dPtYlhW0ro4dO0pSjVNd1ZKTk2WM0ccffxx0XcE05Xq+/vprPfLII3rhhRe0bds2eTwe/xg5y7KCjpOqj759+57xMpdcconmzJmjH/zgB/r5z3+u888/X0899RSXoochgg5ahS+//FKSNGPGjFrnsSxLBw8ePO3rVFZW6rzzzgs6ADdYKKhe7/bt209707CqqqqAtnPOOSfovFFRUfL5fDXaYmNjNW7cOP35z3/WSy+9pOHDh+vYsWN6+umndf7559cY8yJJv//97/Wzn/1M5513nq699lpddNFFio+Pl2VZev755/XOO+8EDM5sCtXbY9GiRbXOc/J+sG1bq1ev1rRp07Ro0SLdd999MsbI5XJp4sSJ+s1vfqOEhITTrrOyslKWZdV6BVVSUpKMMTpw4EAD31VNF154Ya3TcnNzVVJSoo4dOyojI0PJycmKi4uT9M0Yso8++ijocqf7LJwclCorKyUF/yzWVltjtk9iYmLQmizLqnWa9M3l+2eiKdZz7NgxDR48WBs3blSPHj38g/yrA3NhYWGDP/On2+enM3ToUJ199tnyeDy66aabGvw6aF4EHbQK1V+GX331VZ0HxtM5++yztW/fPvl8voCw89lnn9W63jFjxpz24N4UJk6cqD/96U+aN2+ehg8frqVLl+rLL79Ubm5ujcGRx48fV2FhoZKSkrRlyxZ16NChxuu89tpr9V5n9TYItj1qOzBalqUlS5ZoxIgR9VpHYmKiZs6cqZkzZ2rHjh165ZVX9Mc//lGPPfaYKisrgw7kPnV5Y4w+/fTToNMrKipqPWA2RG2/yL/44gs9+uijuvLKK/Xaa68pPj6+xvSnnnqq0euufg/BPouSgm6Dlt4+obJ48WJt3LhRkyZN0l/+8pca0z799FMVFhY2+LUb2gtz++23y+PxqH379pozZ45uueWWJulVRNPi8nK0CldffbWkb642aoxevXrJ5/MFDQNr164NaOvWrZvOOeccvf766wGXkja1/v3769JLL9XixYvl8Xg0b948WZalCRMm1Jhv7969OnDggPr37x8QcqqqqvynMurj3HPPlSTt3r07YNrGjRsD2q6++moZYxq8H7p06aJJkyZpzZo1atu2rRYvXlznMtWnItesWRN0+urVqyUFPwXSlHbs2CGfz6drr702IOR8/PHH2rFjR6PX0a1bN8XHx+utt96Sx+MJmL569eqAg3K4bJ/m9u9//1uWZenGG28MmFbbe6/+gdAcf7u/+93vtGLFCt12221atWqVoqKi9IMf/OCMLr9HyyDooFXIzs5WVFSUcnNztX379oDpXq9X69atq/N1JkyYIGOM8vPza3SLV1ZWavr06QEHkTZt2ujuu+/Wnj17dPfdd+vw4cMBr/npp58GHaPTEBMnTtThw4dVWlqqZcuW6corr9S3v/3tGvN06NBB8fHx2rRpU41TZseOHVNOTs4Z3b+jX79+MsboT3/6U432f/zjH3r66acD5h81apQuvvhif33BvP766/7ttGvXLv3rX/8KmGffvn06cuRIQGAIZsCAAbrsssu0bt06lZWV1Zi2aNEirV27Vpdddlmz/5Kuvjx53bp1NU49Hjx4UHfeeWeNMVINFRUVpVtvvVVfffVVQA/Fm2++GbTXKFy2T3NLSUmRMSYg1OzYsUP33Xdf0F6Zdu3ayRhT6ynFhtqwYYMeeOABde3aVbNnz1b37t1VXFysjz/+OOh4OoQWp67QKlx22WX6v//7P02ePFndu3dXRkaGunbtKq/Xq48++khr165Vhw4dgh5UTzZhwgQ9/fTTWrFiha644gplZmbK6/WqrKxMffv21datWwNO4TzwwAN655139Mc//lFLly7VkCFDlJycrM8//1zbt2/X+vXr9etf/1ppaWmNfp8TJkzQL3/5SxUUFOjYsWNBvzSr7/vx29/+Vj169NCoUaN09OhRrV69Wvv379fgwYNr/YV7qkmTJunhhx/Wb37zG7311lu6/PLLtW3bNi1fvlw33nhjwOm6qKgoPffcc8rIyNCIESPUv39/9ezZU/Hx8dq9e7c2btyonTt3qqKiQrGxsXr77bc1ZswY9enTR1dccYU6duyoL774QosXL9axY8f0i1/8ol51zps3T8OGDdPNN9+sUaNGqVu3bnr//fe1ePFiJSYm1nkzvaZwwQUX6JZbbtEzzzyjnj17atiwYaqsrNTLL7+suLg49ezZU2+//Xaj1/PrX/9a//jHP/TII49o48aNGjhwoPbs2aNnn31WI0aMCNoL1tTbxzTyjsLNsZ6RI0fqkksu0axZs/TOO++oV69e+vDDD/Xiiy/qhhtuCBrMBw8eLNu2dd999+ndd9/192Dm5eU1uOYDBw7olltukW3bevrpp/2n0n/0ox/pH//4hxYtWqRZs2ZpypQpDV4HmliLX+cFNMI///lPM2nSJJOSkmJiY2NNu3btTI8ePcyPf/xjs3r16hrzDho0yLRp0ybgNY4cOWIKCgpMly5dTGxsrElNTTUPPPCA+eSTT4xlWWbMmDFB171gwQIzdOhQ065dOxMTE2M6depkvvvd75qHHnrIfPzxx/75du3aZWzbNj/84Q+Dvk5tdVWrvodITEyM+fzzz4POc/z4cVNcXGy6d+9u4uPjTVJSkpk4caL56KOPzB133GHatGlT474gp6vpX//6lxkxYoQ5++yzjcvlMoMHDzZr164Nenl5tS+++MLcf//9pkePHiYhIcG4XC7TtWtXc9NNN5mnnnrKfyn+xx9/bPLy8szAgQNNUlKSiY2NNZ07dzYjRozw33+kvrZt22YmTJhgOnbsaM466yzTsWNHM2HCBLNt27aAeevaB7WxbdsMGTKk1umHDh0y+fn55tJLLzVxcXHmoosuMnfffbfZt29f0P26Zs0aY9u2mTZtWtDXS0lJMV26dAlo/+yzz8zkyZNNhw4dTHx8vOnVq5eZP3/+aV/vTLbP6S67Pt1+r+v9NPd6Pv74Y3PbbbeZTp06mfj4eHPFFVeYGTNmmGPHjtW675588knTq1cvEx8fb2zbrrGPgv2t1FVHVlaWsW3blJSUBMxfWVlpunTpYmJiYszGjRtr3zBoUZYxLRTdgTD38ssva/jw4br//vtVVFQU6nIAAE2AMTqIOMGei/Xll1/6z/OPGTMmBFUBAJoDY3QQcaZMmaK3335b/fv31/nnn6+PP/5Yy5Yt0/79+/XjH/9YV111VahLBAA0EYIOIk5WVpY+//xz/e1vf9OBAwcUGxur7t27a/LkyfV6wjUAoPVgjA4AAHAsxugAAADH4tRVI+3du1crVqxQSkqK/5k3AACgeR06dEi7du3S8OHDT/sgXoJOI1XfAhwAALS8BQsW6NZbb611OkGnkapvC79gwYImuTNuc8jNzVVxcXGoy8AJ7I/wwv4IL+yP8BLO+8Ptduu2227zH4drQ9BppOrTVWlpaWH70LzExMSwrS0SsT/CC/sjvLA/wktr2B91DRthMDIAAHAsgg4AAHAsgg4AAHAsgk4EGD9+fKhLwEnYH+GF/RFe2B/hxQn7gzsjN9LmzZvVp08fbdq0KewHbAEA4BT1Pf7SowMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAAByLoAMAABzLUUGnqqpKBQUFuu6669SuXTvZtq358+fXe/nKykrddddd6tChg9q2bashQ4Zoy5YtzVgxAABoTo4KOnv37tWDDz6o999/Xz179pRlWfVe1hij66+/Xk8//bRycnL08MMP64svvtCgQYP0wQcfNGPVAACguUSFuoCm1LFjR3366afq0KGDNm3apL59+9Z72b/+9a8qLy9XWVmZxowZI0m66aab1LVrVxUUFGjBggXNVTYAAGgmjurRiY6OVocOHRq0bFlZmS688EJ/yJGk9u3ba9y4cVq8eLG8Xm9TlQkAAFqIo4JOY2zZskW9e/cOaO/Xr5++/vprbdu2LQRVAQCAxiDonFBRUaGkpKSA9uq2PXv2tHRJAACgkQg6Jxw6dEgxMTEB7bGxsTLG6NChQyGoCgAANAZB54S4uDgdOXIkoP3w4cOyLEtxcXEhqApoOGNMqEsAgJBz1FVXjZGUlKSKioqA9uq2jh07nnb53NxcJSYm1mgbP368xo8f33RFAnXweDyakZen9UuXKsHrVVV0tAaMHKl7iorkcrlCXR4ANMjChQu1cOHCGm2VlZX1Wpagc0LPnj21bt26gPbXX39d8fHx6tq162mXLy4uDjqYGWgpHo9HWenpmuJ2q9DnkyXJSFpRWqqsVatUVl5O2AHQKgXrONi8ebP69OlT57IReerq008/1datW3X8+HF/29ixY/XZZ5/pueee87ft3btXixYtUmZmpqKjo0NRKlBvM/LyNMXtVsaJkCNJlqQMn0+5brdm5ueHsjwACAnH9eiUlpbqwIED+uSTTyRJS5Ys0e7duyVJOTk5crlcuu+++zR//nzt2rVLF110kaRvgs4jjzyiSZMm6b333lP79u01e/ZsHT9+XIWFhaF6O0C9rV+6VIU+X9BpGT6fZi1ZIpWUtHBVABBajgs6M2bM0EcffSRJsixLzz//vJ5//nlJ0u233y6XyyXLsmTbNTuzbNvWsmXL9POf/1yPPvqoDh06pH79+mn+/Pm69NJLW/x9AGfCGKMEr1e1PfTEkhTv9coYc0aPRgGA1s5xQWfnzp11zvP444/r8ccfD2hPTEzUnDlzNGfOnOYoDWg2lmWpKjpaRgoadoykquhoQg6AiBORY3QAJxowcqRW2MH/pJfbtgZmZrZwRQAQegQdwCHuKSrSrLQ0LbNtVd9Bx0haZtsqTkvT1OnTQ1keAIQEQQdwCJfLpbLycm3IztawlBSNSk7WsJQUbcjO5tJyABHLcWN0gEjmcrlUWFIilZQw8BgARI8O4FiEHAAg6AAAAAcj6AAAAMci6AAAAMci6ADAaRhj6p4JQNgi6ADAKTwejwpycjQ0NVWjO3fW0NRUFeTkyOPxhLo0AGeIy8sB4CQej0dZ6ema4nar8MST4I2kFaWlylq1insSAa0MPToAcJIZeXma4nYr40TIkb55fliGz6dct1sz8/NDWR6AM0TQAYCTrF+6VMN9vqDTMnw+rV+ypIUrAtAYBB0AOMEYowSvN+gT4KVvenbivV4GKAOtCEEHAE6wLEtV0dGqLcYYSVXR0dx1GmhFCDoAcJIBI0dqhR38q3G5bWtgZmYLVwSgMQg6AHCSe4qKNCstTcts29+zYyQts20Vp6Vp6vTpoSwPwBki6ADASVwul8rKy7UhO1vDUlI0KjlZw1JStCE7m0vLgVaI++gAwClcLpcKS0qkkhIZYxiTA7Ri9OgAwGkQcoDWjaADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAAAci6ADAGhVjDGhLgGtCEEHABD2PB6PCnJyNDQ1VaM7d9bQ1FQV5OTI4/GEujSEuahQFwAAwOl4PB5lpadritutQp9PliQjaUVpqbJWrVJZeblcLleoy0SYokcHABDWZuTlaYrbrYwTIUeSLEkZPp9y3W7NzM8PZXkIcwQdAEBYW790qYb7fEGnZfh8Wr9kSQtXhNaEoAMACFvGGCV4vf6enFNZkuK9XgYoo1YEHQBA2LIsS1XR0aotxhhJVdHRsqzaohAiHUEHABDWBowcqRV28MPVctvWwMzMFq4IrQlBBwAQ1u4pKtKstDQts21/z46RtMy2VZyWpqnTp4eyPIQ5gg4AIKy5XC6VlZdrQ3a2hqWkaFRysoalpGhDdjaXlqNO3EcHABD2XC6XCktKpJISGWMYk4N6o0cHANCqEHJwJgg6ABqEy3kBtAYEHQD1xvOGALQ2jNEBUC88bwhAa0SPDoB64XlDAFojgg6AeuF5QwBaI4IOgDrxvCEArRVBB0CdeN4QgNaKoAOgXnjeEIDWiKADoF543hCA1oigA6BeeN4QgNaI++gAqDeeNwSgtaFHB0CDEHIAtAYEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQCAIxhjQl0CwhBBBwDQank8HhXk5GhoaqpGd+6soampKsjJkcfjCXVpCBNRoS4AAICG8Hg8ykpP1xS3W4U+nyxJRtKK0lJlrVqlsvJyuVyuUJeJEKNHBwDQKs3Iy9MUt1sZJ0KOJFmSMnw+5brdmpmfH8ryECYIOgCAVmn90qUa7vMFnZbh82n9kiUtXBHCEUEHANDqGGOU4PX6e3JOZUmK93oZoAyCDgCg9bEsS1XR0aotxhhJVdHRsqzaohAiBUEHANAqDRg5Uivs4Iex5batgZmZLVwRwhFBBwDQKt1TVKRZaWlaZtv+nh0jaZltqzgtTVOnTw9leQgTBB0AQKvkcrlUVl6uDdnZGpaSolHJyRqWkqIN2dlcWg4/7qMDAGi1XC6XCktKpJISGWMYk4MA9OgAAByBkINgCDoAAMCxCDoAAMCxCDoAAMCxCDoAAMCxCDoAAMCxCDoAAMCxHBV0jh49ql/84hfq1KmT4uPjdfXVV2vlypV1LverX/1Ktm0H/IuPj2+BqgEAQHNx1A0DJ0yYoOeff165ubm65JJLNHfuXF1//fVas2aN+vfvf9plLcvSH/7wByUkJPjb2rRp09wlAwCAZuSYoPPGG2/o2Wef1cyZM5WbmytJuv3223XFFVfo3nvv1bp16+p8jaysLJ133nnNXSoAAGghjjl1tWjRIkVFRenOO+/0t8XExGjy5MkqLy/XJ598Uudr+Hw+eTye5iwTAAC0IMcEnbfeektdu3ZV27Zta7T369fPP/10jDHq0qWLEhMT5XK5dPvtt+vzzz9vtnoBAEDzc8ypq4qKCiUlJQW0JyUlyRijPXv21Lrsueeeq7vvvlvp6emKiYnR2rVr9dhjj2njxo168803A8ITAABoHRw5T94XAAAgAElEQVQTdA4dOqSYmJiA9tjYWP/02uTk5NT4/zFjxqhv37669dZbNXv2bN17771NWywAAGgRjjl1FRcXpyNHjgS0Hz582D/9TIwfP14XXnhhvS5PBwAA4ckxPTpJSUlBT09VVFRIkjp27HjGr9m5c2ft27evXvPm5uYqMTGxRtv48eM1fvz4M14vAAD4j4ULF2rhwoU12iorK+u1rGOCTs+ePbVmzRodPHiwxpia119/XZZlqWfPnmf8mrt27VLv3r3rNW9xcXG95wWAUDPGyLKsUJcB1EuwjoPNmzerT58+dS7rmFNXY8eO1bFjxzRnzhx/29GjRzV37lxdffXVSk5OliTt3r1bW7durbHs3r17A15v9uzZ+uKLL3Tdddc1b+ERzhgT6hKAiOHxeFSQk6Ohqaka3bmzhqamqiAnh9tqwNEc06PTr18/3XTTTbr//vv12Wef+e+M/OGHH+rxxx/3z3f77bfr1Vdflc/n87d961vf0s0336wePXooNjZWa9eu1TPPPKPevXvrrrvuCsXbcTSPx6MZeXlav3SpErxeVUVHa8DIkbqnqEgulyvU5UU0fuU7l8fjUVZ6uqa43Sr0+WRJMpJWlJYqa9UqlZWX8/cHR3JM0JGkJ554Qg888IAWLFig/fv368orr9SLL76oAQMG+OexLEu2XbMj67bbbtNrr72m5557TocPH9a3vvUt3Xffffp//+//+a/aQtPgyzb8EDwjw4y8PE1xu5Vx0o88S1KGzyfjdmtmfr4KS0pCVyDQTCzDuYNGqT5HuGnTJsbo1ENBTo7SS0trfNlWW2bb2pCdzZdtCzo5eA4/OXjatmalpRE8HWRoaqpe3rVLwfrrjKRhKSl6eefOli4LaLD6Hn8dM0YHrcP6pUs1PEjIkb75Zbl+yZIWriiynfwrv/oAWP0rP/fEr3y0fsYYJXi9QUOO9M0+j/d6GTMHRyLooMXwZRt+CJ6RwbIsVUVHq7a/LCOpKjqa8VlwJIIOWgxftuGF4BlZBowcqRV28K/85batgZmZLVwR0DIIOmhRfNmGD4JnZLmnqEiz0tK0zLb9+9zom7FxxWlpmjp9eijLA5oNQQctii/b8ELwjBwul0tl5eXakJ2tYSkpGpWcrGEpKdqQnc2gcziaoy4vR/ir/rKdmZ+vWUuWKN7r1dfR0RqQmamy6dP5sm1h9xQVKWvVKpmTBiQbfRNyitPSVEbwdBSXy/XNVY0lJdwzCRGDoIMWx5dt+CB4Ri7+7hApCDoIKb5sQ4/giUjEZz1yMEYHgB9f/HAynvUVmejRAQA4Ho+fiVz06AAAHI+7gEcugg4ANANutBheuAt45CLoAEATYQxIeOIu4JGNMToA0AQYAxK+Tr4LeG1Pb+cu4M5Fjw4ANAHGgIQ37gIeuQg6ANAEGAMS3nj8TN2ceuqOoAMAjcQYkPDHs76Ci4RxZYzRAYBGYgxI68BdwGuKlHFl9OgAQBNgDEjrEukhR4qccWUEHQBoAowBQWsTKePKCDoA0AQYA4LWJJLGlTFGBwCaCGNA0FpE0rgyenQAoBk44QABZ4uUcWUEHQAAIlCkjCsj6AAAEIEiZVwZY3QAAIhQkTCujB4dAADgyJAjEXQAAICDEXQAAIBjEXQAAIBjEXQAAIBjEXSAZuKEW6cDQGtH0AGakMfjUUFOjoampmp0584ampqqgpwceTyeUJcGABGJ++gATcTj8SgrPV1T3G4V+nyy9M1dRleUlipr1SpH3YALAFoLenSAJjIjL09T3G5lnAg50jcPy8vw+ZTrdmtmfn4oywOAiETQAZrI+qVLNdznCzotw+fT+iVLWrgiAABBB2gCxhgleL2q7b6ilqR4r5cBygDQwgg6QBOwLEtV0dGqLcYYSVXR0Y69xToAhCuCDtBEBowcqRV28D+p5batgZmZLVwRAICgAzSRe4qKNCstTcts29+zYyQts20Vp6Vp6vTpoSwPACISQQdoIi6XS2Xl5dqQna1hKSkalZysYSkp2pCdzaXlABAi3EcHaEIul0uFJSVSSYmMMYzJAYAQo0cHaCaEHAAIPYIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOAABwLIIOwp4xJtQlAABaKYIOwpLH41FBTo6GpqZqdOfOGpqaqoKcHHk8nlCXBgBoRaJCXQBwKo/Ho6z0dE1xu1Xo88mSZCStKC1V1qpVKisvl8vlCnWZAIBWgB4dhJ0ZeXma4nYr40TIkSRLUobPp1y3WzPz80NZHgCgFSHoIOysX7pUw32+oNMyfD6tX7KkhSsCALRWBB2EFWOMErxef0/OqSxJ8V4vA5QBAPVC0EFYsSxLVdHRqi3GGElV0dGyrNqiEAAA/0HQQdgZMHKkVtjBP5rLbVsDMzNbuCIAQGtF0EHYuaeoSLPS0rTMtv09O0bSMttWcVqapk6fHsryAACtCEEHYcflcqmsvFwbsrM1LCVFo5KTNSwlRRuys7m0HABwRriPDsKSy+VSYUmJVFIiYwxjcgAADUKPDsIeIQcA0FAEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FgEHQAA4FiOCjpHjx7VL37xC3Xq1Enx8fG6+uqrtXLlynotu2fPHo0bN07nnnuuEhMTNXr0aO3cubOZKwYAAM3JUUFnwoQJeuSRR3Tbbbfp97//vaKionT99dfrtddeO+1yVVVVGjRokNauXav8/HxNmzZNW7Zs0aBBg7R///4Wqh4AADS1qMa+wIcffqh58+Zpx44d2r9/v4wxNaZblqXFixc3djV1euONN/Tss89q5syZys3NlSTdfvvtuuKKK3Tvvfdq3bp1tS5bWlqqDz74QBs3blTv3r0lSRkZGbriiis0c+ZMTZ8+vdnrBwAATa9RQWfhwoWaOHGijh07pnPOOUeJiYkB81iW1ZhV1NuiRYsUFRWlO++8098WExOjyZMnKy8vT5988omSk5ODLltWVqa+ffv6Q44kXXbZZfr+97+vZ599lqATRowxLfaZCjeR/N4bim0WXhq6Pxq7H/kcRLZGnbq6//771a1bN73//vvat2+fdu7cGfBvx44dTVXrab311lvq2rWr2rZtW6O9X79+/unBGGP0zjvv6KqrrgqY1q9fP33wwQeqqqpq+oJRbx6PRwU5ORqamqrRnTtraGqqCnJy5PF4Ql1as4vk995QbLPw0tD90dj9yOcAfqYREhISTGlpaWNeoslcccUVZujQoQHt//rXv4xlWWbOnDlBl9u7d6+xLMtMnz49YNrs2bONbdtm27Ztta5306ZNRpLZtGlTw4tHrb766itzbffuZpltG59kjGR8kllm2+ba7t3NV199FeoSm00kv/eGYpuFl4buj8buRz4HkaG+x99G9eh85zvf0UcffdQ0iauRDh06pJiYmID22NhY//TalpPUoGXR/Gbk5WmK260Mn0/VHc+WpAyfT7lut2bm54eyvGYVye+9odhm4aWh+6Ox+5HPAU7WqKDzyCOPaMGCBSorK2uqehosLi5OR44cCWg/fPiwf3pty0lq0LJofuuXLtVwny/otAyfT+uXLGnhilpOJL/3hmKbhZeG7o/G7kc+BzhZowYj9+jRQ0VFRbr55puVkJCgTp06qU2bNjXmsSxLb7/9dqOKrI+kpCTt2bMnoL2iokKS1LFjx6DLnXfeeYqJifHPF2zZpKSkOtefm5sbMBh7/PjxGj9+fJ3LIjhjjBK8XtU2hNCSFO/1OnKgYSS/94Zim4WXhu6Pxu5HPgfOtHDhQi1cuLBGW2VlZb2WbVTQmT17tu6++27Fxsbq4osvDnrVVUvp2bOn1qxZo4MHD9YYkPz666/Lsiz17Nkz6HKWZalHjx568803A6Zt2LBBXbp0CRjgHExxcXGNq7bQeJZlqSo6WkYK+qVlJFVFRzvyyyqS33tDsc3CS0P3R2P3I58DZwrWcbB582b16dOnzmUbderqN7/5jfr37689e/Zo8+bNWr16ddB/LWHs2LE6duyY5syZ4287evSo5s6dq6uvvtp/afnu3bu1devWgGU3btyozZs3+9u2bt2qVatWady4cS1SP4IbMHKkVtjBP6bLbVsDMzNbuKKWE8nvvaHYZuGlofujsfuRzwFqaMyI57Zt25r//d//bcxLNKlx48aZs846y9x7771mzpw5pn///uass84y69at889zzTXXGMuyaizn8XjMJZdcYi644ALz8MMPm+LiYnPRRReZzp07m7179552nVx11byqr574+ylXT/w9Aq6eiOT33lBss/DS0P3R2P3I5yAytMhVV9dcc43efffdpklcTeCJJ57Qz372My1YsEA//elPdfz4cb344osaMGCAfx7LsmSfkvTbtm2rV155Rddcc42KiopUUFCgXr16ac2aNWrXrl1L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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAI6CAYAAAAuSOLAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl8VNX9//H3vSRmgRARRMNiExQEFRtQKFtboCgIsgmiFAUpX22//WJqlKL+oCUiaW0VkNrwbWn9FiiKWqICtUil7AjI5lIbwQpRhKBENA5hC+T8/tBMGWYSss125vV8PHg89Nx7Zz5zb2bmPeeec69jjDECAACwkBvuAgAAAIKFoAMAAKxF0AEAANYi6AAAAGsRdAAAgLUIOgAAwFoEHQAAYC2CDgAAsBZBBwAAWIugA2v17t1brsufuCR9+OGHcl1XP/jBD8JdSsh88sknGjdunFq3bq24uDg1aNBAX375ZbjLqpN169bJdV1Nnz493KXEBPa3HeLCXQAQLI7jEHRi2Lhx47Rq1SqNHj1aV1xxhVzXVWJiYrjLQgjl5ORo+vTpWrt2rb7zne/U6jEcx5HjOPVcGUKJoANr/fnPf9axY8fCXQbCoKysTKtWrdINN9ygP//5z+EuB2FS15DyrW99SwUFBWrWrFk9VoVQI+jAWq1atQp3CQiToqIilZeXKy0tLdylIIzqes/qxMREtWvXrp6qQbjQr4+osnXrVo0cOVJpaWlKSEjQZZddph/96EcqKiryW7eyMTqnTp1STk6OLr/8ciUmJqpNmzb62c9+plOnTsl1XfXt29dvmzNnzmju3Lnq3r27UlNT1bBhQ3Xu3Fl5eXl+H6Znj4f58MMPdfvtt+viiy9WUlKSunTpoldeecVn/ccee0yu6+q3v/1twNdcVFSkBg0a6Fvf+pZP2/Tp09WrVy/vvmjZsqXGjBmj9957r1r7sqp9JEkLFiyQ67pauHCh37IDBw5o4sSJ3n3YrFkzDR06VNu3b/db9+jRo3r00UfVsWNHpaamqnHjxrriiit0++23a9euXdWu9d///rfGjh2rVq1aeV/vuHHj9O9//9tnvYyMDKWnp8txHM2fP1+u61Z7fFLF8f/kk0/0X//1X2rVqpXi4uK8++D999/XQw89pC5duqh58+ZKTExUenq6fvjDH+rAgQN+j3f2GI+33npLgwYNUpMmTdSwYUP17t1bmzdvDljHp59+qgkTJujSSy9VcnKyOnXqFPA41Gb/SF+d0nFdV+vXr9fixYt1/fXXq2HDhmrZsqUeeOABnTp1SpK0evVq9enTR6mpqbrooos0duxYHTly5Lz7MVjPs3btWt1zzz26+uqrlZqaquTkZHXs2FHTp0/XyZMnfdbNyMjwjq2p+Dt3XVcNGjTwrnPXXXfJdV0VFhbqqaee0je/+U0lJyd7PwMCjdF56aWX5LquevTooTNnzvg85z//+U8lJyerVatWKi4urvZ+QnDRo4Oo8ac//Un33HOPEhMTNWTIELVu3Vrvv/++nn76aS1fvlxbt2716cWprNv6lltu0d/+9je1a9dO9957r8rKyrRgwQK9++67AZ/39OnTuvnmm/X3v/9d7du315gxY5SYmKg1a9bo3nvv1RtvvKEFCxb4bVdYWKiuXbvq8ssv935wP//88xo2bJhWrVql7373u5KksWPHaurUqVqwYIEmTpzo9zgVp17uuusub9v69ev161//Wn369NHIkSPVqFEjvf/++8rPz9eyZcv0+uuvq2PHjufdp+fr2g+0bOfOnbrxxhv1xRdfqH///hoxYoSKi4v18ssvq1evXnr55Zc1YMAA7/r9+/fX5s2b1aNHD919992Ki4vT/v37veMmOnXqdN46t23bpn79+qm0tFRDhgzRVVddpffee0/PPPOMli5dqtWrV6tz586SpOzsbBUWFurJJ59UZmamhg0bJknKzMw87/NI0pEjR9StWzelpKRoxIgRcl1Xl1xyiSTpxRdf1Lx589SnTx/17NlTF1xwgd5991398Y9/1F//+ldt3749YC/Stm3b9Ktf/cq7Dz766CMtWbJE/fr105tvvqm2bdv6PH/37t1VWFiob3/72+rZs6eKior03//937rhhhsCHpOa7B/pP8f9N7/5jV599VUNGzZMffr00d///nfNnj1bR44c0dChQ3X77bfr5ptv1g9/+EO9/vrrWrRokT777DO/sF6Z+n6eX/3qV9q9e7d69Oihm2++WSdOnNCmTZuUk5OjdevWadWqVd79k52drZdfflnr1q3TXXfdpfT0dG9N59aXlZWljRs3atCgQRo0aJBPGDrX8OHDNXHiRP32t7/VlClT9Nhjj0mSjh8/rttuu01lZWV65plnON0VSQwQBfbs2WMuuOAC065dO1NUVOSzbM2aNaZBgwbmlltu8Wnv3bu3cV3Xp23hwoXGcRzTu3dvU1ZW5m0vKSkx7du3N67rmj59+vhsM23aNOM4jvnJT35iysvLve3l5eVmwoQJxnVds2zZMm97YWGhcRzHuK5rHn30UZ/HWrlypXEcxwwaNMinvX///sZ1XfPuu+/6vfarrrrKJCQkmCNHjnjbDh8+bI4ePeq37ttvv20aNWpkBg4c6NNeUdP48ePPu48qzJ8/37iuaxYsWOBtO336tLn88stNUlKS2bBhg8/6RUVFpmXLlqZFixbm1KlTxhhj3nnnHeM4jhkxYkTA5/jiiy8Ctp+r4tgsXrzYp/2FF14wjuOYDh06VOv1nk/FcbvrrrvMmTNn/JYfPHjQ+9rO9tprr5kGDRqYH//4xz7ta9eu9T7mwoULfZb9/ve/N47jmP/5n//xab/77ruN67rmgQce8GnfsWOHiY+PN67rmkceecRnWU33T05OjnEcx1x44YVm9+7d3vaTJ0+aq6++2jRo0MA0a9bM7xjfcMMNxnVd89Zbb/ntg0Dq+3n27dsX8Hl+/vOfG9d1zQsvvOD3/K7rmnXr1gXc7q677jKO45hWrVqZDz/80G95xfE7d3+fPHnSdO7c2TRo0MCsXLnS+1iBjg3Cj6CDqHDfffcZ13XN3/72t4DLhw8fbuLj432+/AN9iX/ve98zruuajRs3+j3GM888YxzH8Qk65eXlplmzZqZFixYBv/i++OIL47quue2227xtFV+yGRkZPsGowje+8Q1z8cUX+7Q9++yzxnEcM3nyZJ/27du3G8dxzMiRIwO+7kCGDBlikpKSzOnTp/1qqmvQWbp0acA6K8yZM8e4rmtWrFhhjPlP0BkzZky16z/Xpk2bjOM4plevXgGXf/vb3zau6/p8WdYl6CQmJprDhw/XuM5rr73WXH755T5tFV+U3/nOd/zWLysrM/Hx8aZLly4+bQ0bNjSpqanmyy+/9Nsm0JdpbfZPRQCZNm2a3/rTp083juOYu+66y2/ZggULAoa2yoTqeYqLi43jOGbChAl+z3++oOO6rnnqqacCLq8s6BhjzPvvv29SUlLMJZdcYp544gnvZ0eg9zzCi1NXiApbtmyR9NU5+jfeeMNv+aeffqozZ85oz549VZ4KefPNN+W6rrp37+63rFevXn5te/bs0WeffaZ27drp0Ucf9VtujFFSUpIKCgr8lmVmZgY8zdC6dWvv66kwfPhwpaamatGiRXrssce8282fP1+O4/ictqrwyiuv6He/+5127Nih4uJinT592rvMcRwVFxd7T7nUl4oxJYWFhXrkkUf8lr///vsyxqigoEADBgzQVVddpczMTC1evFiFhYUaOnSoevXqpeuvv17x8fHVes6dO3dKkvr06RNwed++fbVp0ybt2rUr4DGsqfT09CpPOyxatEgLFizQW2+9pc8//9xnnEZCQkLAba677jq/tri4OF1yySX6/PPPvW3vvfeejh07pu985ztKSUnx26Z3795+p0lru38cxwlYV4sWLSTJ51RXhZYtW8oYo48//jjgcwVSn89z7NgxPfnkk3r55Ze1Z88eeTwe7xg5x3ECjpOqji5dutR4myuuuELz5s3T97//ff30pz/VxRdfrGeffZap6BGIoIOo8Nlnn0mSnnjiiUrXcRxHR48erfJxSkpKdNFFFwUcgBsoFFQ87/vvv1/lRcNKS0v92i688MKA68bFxam8vNynLTExUaNGjdIf//hH/f3vf1f//v11+vRpPffcc7r44ot9xrxI0m9+8xvdd999uuiii3TDDTfosssuU3JyshzH0UsvvaS3337bb3BmfajYH0uWLKl0nbOPg+u6WrNmjaZPn64lS5booYcekjFGKSkpGjdunH75y1+qYcOGVT5nSUmJHMepdAZVWlqajDH64osvavmqfF166aWVLsvOztacOXPUokULDRgwQC1btlRSUpKkr8aQffTRRwG3q+pv4eygVFJSIinw32JltdVl/6SmpgasyXGcSpdJX03fr4n6eJ7Tp0+rT58+2rZtmzp27Ogd5F8RmHNycmr9N1/VMa9Kv3791LhxY3k8Ht166621fhwEF0EHUaHiw/DLL7887xdjVRo3bqwjR46ovLzcL+x88sknlT7v8OHDq/xyrw/jxo3TH/7wBy1YsED9+/fX8uXL9dlnnyk7O9tncOSZM2eUk5OjtLQ07dq1S82bN/d5nNdff73az1mxDwLtj8q+GB3H0bJlyzRo0KBqPUdqaqpmzpypmTNnau/evVq3bp1+//vf67e//a1KSkoCDuQ+d3tjjA4dOhRweVFRUaVfmLVR2S/yw4cP66mnntK1116r119/XcnJyT7Ln3322To/d8VrCPS3KCngPgj1/gmXpUuXatu2bRo/fryefvppn2WHDh1STk5OrR+7tr0wd955pzwej5o1a6Z58+bp9ttvr5deRdQvppcjKnTr1k3SV7ON6qJTp04qLy8PGAY2bNjg19a+fXtdeOGF2rJli99U0vrWo0cPtW3bVkuXLpXH49GCBQvkOI7Gjh3rs15xcbG++OIL9ejRwy/klJaWek9lVEeTJk0kSfv37/dbtm3bNr+2bt26yRhT6+PQpk0bjR8/XmvXrlWjRo20dOnS825TcSpy7dq1AZevWbNGUuBTIPVp7969Ki8v1w033OAXcj7++GPt3bu3zs/Rvn17JScn680335TH4/FbvmbNGr8v5UjZP8H273//W47j6JZbbvFbVtlrr/iBEIz37q9//WutXLlSd9xxh1avXq24uDh9//vfr9H0e4QGQQdRYeLEiYqLi1N2drbef/99v+VlZWXauHHjeR9n7NixMsZo6tSpPt3iJSUlmjFjht+XSIMGDXTvvffq4MGDuvfee3XixAm/xzx06FDAMTq1MW7cOJ04cUJ5eXlasWKFrr32Wn3zm9/0Wad58+ZKTk7Wjh07fE6ZnT59WllZWTW6fkfXrl1ljNEf/vAHn/Z//OMfeu655/zWHzp0qC6//HJvfYFs2bLFu58KCwv1r3/9y2+dI0eO6OTJk36BIZCePXvqyiuv1MaNG5Wfn++zbMmSJdqwYYOuvPLKoP+SrpievHHjRp9Tj0ePHtXdd9/tM0aqtuLi4jRmzBh9+eWXfj0U27dvD9hrFCn7J9jS09NljPELNXv37tVDDz0UsFemadOmMsZUekqxtrZu3aqf/exnateunebOnaurr75as2fP1scffxxwPB3Ci1NXiApXXnml/u///k8TJkzQ1VdfrQEDBqhdu3YqKyvTRx99pA0bNqh58+YBv1TPNnbsWD333HNauXKlrrnmGg0ZMkRlZWXKz89Xly5dtHv3br9TOD/72c/09ttv6/e//72WL1+uvn37qmXLlvr000/1/vvva9OmTfrFL36hDh061Pl1jh07Vj//+c81bdo0nT59OuCHZsV1P371q1+pY8eOGjp0qE6dOqU1a9bo888/V58+fSr9hXuu8ePH6/HHH9cvf/lLvfnmm7rqqqu0Z88evfrqq7rlllv8TtfFxcXpxRdf1IABAzRo0CD16NFDmZmZSk5O1v79+7Vt2zbt27dPRUVFSkxM1FtvvaXhw4fruuuu0zXXXKMWLVro8OHDWrp0qU6fPq0HH3ywWnUuWLBAN954o2677TYNHTpU7du313vvvaelS5cqNTX1vBfTqw+XXHKJbr/9dj3//PPKzMzUjTfeqJKSEr322mtKSkpSZmam3nrrrTo/zy9+8Qv94x//0JNPPqlt27apV69eOnjwoF544QUNGjQoYC9Yfe8fU8crCgfjeQYPHqwrrrhCs2bN0ttvv61OnTrpww8/1CuvvKKbb745YDDv06ePXNfVQw89pHfeecfbgzllypRa1/zFF1/o9ttvl+u6eu6557yn0n/4wx/qH//4h5YsWaJZs2bp/vvvr/VzoJ6FfJ4XUAf//Oc/zfjx4016erpJTEw0TZs2NR07djQ/+tGPzJo1a3zW7d27t2nQoIHfY5w8edJMmzbNtGnTxiQmJpqMjAzzs5/9zBw4cMA4jmOGDx8e8LkXLVpk+vXrZ5o2bWoSEhJMq1atzLe//W3z2GOPmY8//ti7XmFhoXFd1/zgBz8I+DiV1VWh4hoiCQkJ5tNPPw24zpkzZ8zs2bPN1VdfbZKTk01aWpoZN26c+eijj8xdd91lGjRo4HNdkKpq+te//mUGDRpkGjdubFJSUkyfPn3Mhg0bAk4vr3D48GHz8MMPm44dO5qGDRualJQU065dO3PrrbeaZ5991jsV/+OPPzZTpkwxvXr1MmlpaSYxMdG0bt3aDBo0yHv9keras2ePGTt2rGnRooW54IILTIsWLczYsWPNnj17/NY93zGojOu6pm/fvpUuP378uJk6dapp27atSUpKMpdddpm59957zZEjRwIe17Vr1xrXdc306dMDPl56erpp06aNX/snn3xiJkyYYJo3b26Sk5NNp06dzMKFC6t8vJrsn6qmXVd13M/3eoL9PB9//LG54447TKtWrUxycrK55pprzBNPPGFOnz5d6bF75plnTKdOnUxycrJxXdfnGAV6r5yvjhEjRhjXdc2cOXP81i8pKTFt2rQxCQkJZtu2bZXvGISUY0yIojsQ4V577TX1799fDz/8sHJzc8NdDgCgHjBGBzEn0H2xPvvsM+95/uHDh4ehKgBAMDBGBzHn/vvv11tvvaUePXro4osv1scff6wVK1bo888/149+9CNdf/314S4RAFBPCDqIOSNGjNCnn36qv/71r/riiy+UmJioq6++WhMmTKjWHa4BANGDMToAAMBajNEBAADW4tRVHRUXF2vlypVKT0/33vMGAAAE1/Hjx1VY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", "text/plain": [ - "PyPlot.Figure(PyObject )" + "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "(-1.2, 1.2)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -307,7 +304,7 @@ "axis(\"square\")\n", "title(\"eigenvalues of random matrix\")\n", "xlim(-1.2,1.2)\n", - "ylim(-1.2,1.2)" + "ylim(-1.2,1.2);" ] }, { @@ -319,7 +316,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -331,16 +328,16 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "PyPlot.Figure(PyObject )" + "PyPlot.Figure(PyObject )" ] }, "metadata": {}, @@ -357,7 +354,7 @@ "end\n", "\n", "# integrate ẋ = f(t,x) numerically from t=0 to t=21\n", - "t = 0:0.01:21.0\n", + "t = 0:0.01:30.0\n", "x₀ = [0.1; 0.0; 0.0]\n", "t,x = ode45(f, x₀, t)\n", "\n", @@ -376,295 +373,16 @@ }, { "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Singular values of Hilbert matrix" - ] - }, - { - "cell_type": "code", - "execution_count": 8, "metadata": { "collapsed": true }, - "outputs": [], - "source": [ - "using GenericSVD" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "10×10 Array{Float64,2}:\n", - " 0.5 0.333333 0.25 … 0.111111 0.1 0.0909091\n", - " 0.333333 0.25 0.2 0.1 0.0909091 0.0833333\n", - " 0.25 0.2 0.166667 0.0909091 0.0833333 0.0769231\n", - " 0.2 0.166667 0.142857 0.0833333 0.0769231 0.0714286\n", - " 0.166667 0.142857 0.125 0.0769231 0.0714286 0.0666667\n", - " 0.142857 0.125 0.111111 … 0.0714286 0.0666667 0.0625 \n", - " 0.125 0.111111 0.1 0.0666667 0.0625 0.0588235\n", - " 0.111111 0.1 0.0909091 0.0625 0.0588235 0.0555556\n", - " 0.1 0.0909091 0.0833333 0.0588235 0.0555556 0.0526316\n", - " 0.0909091 0.0833333 0.0769231 0.0555556 0.0526316 0.05 " - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Form Hilbert matrix over rationals using list comprehension syntax\n", - "m = 10\n", - "A = [(1/(i+j)) for i=1:m, j=1:m]" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "6.23091645127766e13" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cond(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "10-element Array{Float64,1}:\n", - " 1.28766 \n", - " 0.162737 \n", - " 0.0132489 \n", - " 0.000798037\n", - " 3.58996e-5 \n", - " 1.19264e-6 \n", - " 2.8445e-8 \n", - " 4.61135e-10\n", - " 4.55323e-12\n", - " 2.06657e-14" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "σ = svdvals(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "10×10 Array{Float64,2}:\n", - " 0.5 0.333333 0.25 … 0.111111 0.1 0.0909091\n", - " 0.333333 0.25 0.2 0.1 0.0909091 0.0833333\n", - " 0.25 0.2 0.166667 0.0909091 0.0833333 0.0769231\n", - " 0.2 0.166667 0.142857 0.0833333 0.0769231 0.0714286\n", - " 0.166667 0.142857 0.125 0.0769231 0.0714286 0.0666667\n", - " 0.142857 0.125 0.111111 … 0.0714286 0.0666667 0.0625 \n", - " 0.125 0.111111 0.1 0.0666667 0.0625 0.0588235\n", - " 0.111111 0.1 0.0909091 0.0625 0.0588235 0.0555556\n", - " 0.1 0.0909091 0.0833333 0.0588235 0.0555556 0.0526316\n", - " 0.0909091 0.0833333 0.0769231 0.0555556 0.0526316 0.05 " - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "# Julia converted the Rationals to Float32s for the SVD.\n", - "# Those last few singular values look suspect. Try again with Float64\n", - "m = 10\n", - "A = [Float64(1//(i+j)) for i=1:m, j=1:m]" + "## Function definition" ] }, { "cell_type": "code", - "execution_count": 44, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "6.23091645127766e13" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cond(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "10-element Array{Float64,1}:\n", - " 1.28766 \n", - " 0.162737 \n", - " 0.0132489 \n", - " 0.000798037\n", - " 3.58996e-5 \n", - " 1.19264e-6 \n", - " 2.8445e-8 \n", - " 4.61135e-10\n", - " 4.55323e-12\n", - " 2.06657e-14" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "σ = svdvals(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2.177988536256248982724176502736382176411066796736784337676765679838276034846115875889132968096962041471899701133801886250244066994528819515032748716353521936675639194934720913059213229596634182367327825499758401996715809184046783895705571880700524638429358753683189155499583796856425393527528024959649211221082e+47" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# That's better. Now do a bigger Hilbert matrix with BigFloats! \n", - "m = 32\n", - "A = [BigFloat(1//(i+j)) for i=1:m, j=1:m]\n", - "cond(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "32-element Array{BigFloat,1}:\n", - " 1.621285348850195490535789906811725920847712216973467998238033279942275918566823324076618508167273668813465376017757454035593339895215995978528912381852198144702668022216401891288157439006369858076295644689155522082347870193741622369158153792684178791547800956914349998002909881922616375154782468610987982204544 \n", - " 3.456868707956789891613041213876354179908321698470618951390175507815876021222813292175036388857809172851867280153563762180868552731037798684453497689977377980476626404712761882691654024482994069376894964625143490599298387878513357004389746849501469219007562414330716581207144898324402041527589149163144858657038e-01\n", - " 5.407277491128296640365093840241177508410407990952070794308942113082198416773327134074757727031576213402299837046549430760559731621834899701453304571921990843974273327767676153210797642241181178203011640599921913332843127168291633337126969133396566809243894594744597095598846011983409081609436450642829116855481e-02\n", - " 7.247892437505897653348261847192496707722795681674677645117909694725849544134170683952905944289684726919301494718670042190030027315665838300052710383302554998720335554393401096359391289055572134672770278684143736019722477754065891175506607839742393499605653540065014800512982949540434328268613187027907886537023e-03\n", - " 8.555573260790678206081844535465751651064962858680634979016093310430705471705196819344027970293775275459324531494783636581682367948472646372657626609972226282455988595963634629907094346362384259482538228689725324978187594400567185575858311689496646501686790709032680718237341948335067922921921715180091893273108e-04\n", - " 8.99064412446338523810673966058074866157950240100640506355435323825169097395795695122099963775473073380839530009745857645220767610681346640874377276272110770463317147886786204056396889284476067391816408528176747355354219607929379886667681982360876595827421596927713665826657888799860520506091754160243045619063e-05 \n", - " 8.469113465736466761723559913788225531943334162106602942912661761678765249902800983105240747113148813531427489724208840597751560620662241057125389970151996618832104493316633271964830283571098168787165486142833637890221768656300284139309557617251220514628133882306212806027853871206265709826608074316904614599332e-06\n", - " 7.186343031713320548290344408832921755837525301483893305221488793219514953376431272938829134876184306054569355062904777632059528895904649033495405542310392292711662316335755873876479460501463045719678277611601616885494728646115314084855862386666843201891371485146110344096580290972929228616157326682198988178932e-07\n", - " 5.512102340080481160972555679834760007138668266975981663850422474639906917746887315169480805156583410081989066370760870412665960978566036338203693335923204559387401629166904243558509109185520944148738401937338218063420319425515762067907696515044277465618868465489191762184467975759626159833308162149118970907239e-08\n", - " 3.831179294893107144564865729031941718145968107442769118914039692971499494699882152433122002301397746889011683768967128043929348476280553691350818237634876451880059277707393298430730675519715674929110078807139124867278988436449874389787656711410194146919292574594271431379815689660582293641399820634210867631355e-09\n", - " 2.416920770910054394839477875374105164107281953426398601876415263029088825237468892309621332740937725666723831008348181302641331568306860115635718212438973744680297192824373973219214639704591766254652710851552246236570475384034719512097121860274621409898216779293531827675986180467547052089688050835130474912777e-10\n", - " 1.385214026514799384333207696454040129243594070315913733101035163198470683681448448858273448770175488346512694437300840419701962500456826090655458689407425420504380899027410715112888215059406734068950510429286164362812613711491950046022105587522189292468501097173438486072018407536643196180135071299264894563954e-11\n", - " 7.215118537016004343658651831087853830274786574560959044935861349271410417172257891719669475446047414809062474904268346478288848969478724734927284641664462384267299504500408904267007356582546977886787279656453663198436576832857860869347768744665686038723965823415984949757927732078097216879531902919179581503773e-13\n", - " ⋮ \n", - " 1.084475414530059171569793825492576302941108268798957947226972723413162131748576489695264558916057949903498507840083031646024069915469826033156201912557765956626816765770679418090161459444699099999349628648533544087417650919797980225469133197280289567661289836186010349388286196642481273510535383187621217256876e-24\n", - " 2.206162923165380848983593074674952199726885833682423426373861933910248772655238606137737717353318397879119968490167197158061774541114820444244909733337590988234752920741338056263514867226791547734201217660531466216357071368746456073415894689649192547445650931291521025114228222366186775134754977981687055312392e-26\n", - " 3.952235154451152917754719254643876612163749706791892668213870652312492839604674902141458280050225349717340901899270150355008979578038284127667883433324678345940761007409024156809718975208762051306859758780280993780899937289001766929753982694385055910483400802384533506832675746142060789065945181069933857885449e-28\n", - " 6.178288776503734172142600194054798399618619228741402205490955994890282578291967463686873735140730258572629939923942631729748211451093565341710087145148613310276308331089336479684056336527319794666426759125295798036100373191134846054174160418897083937295302270301507778242450843166282282216755245337823792585986e-30\n", - " 8.330880951107681333066341256517462134475588481961138543765584149192681798487014768575850346396696719449547240688839974435240620193870508876359426712882612135514727252140644180922343967472142061110217841235587421620443339703512347281961690341774424000370782792485514118692438282420451107243788930525516789139681e-32\n", - " 9.545983649487228094299175203062478531562335526946841737553409406855003335411884025139411965536444578818254051242447466985041961009799781351685629748598001350503140447547877551363220262530327654095818457263354995792096346715557841722972833006052613858596691283637060492650524072967818659837674896341675899919995e-34\n", - " 9.112365936796919191953714026018812451744347750776554642154044803077338275761468981273363032366002897579333289616917147682300280271935312199484304811220127924307487940911885260850461556313893034823018602518489264818745736015502096300655745853825532383079669003532124556076002939010800639085757288301798695965915e-36\n", - " 7.050139826131511918363111980783083147260691788246216239793410990197529068823320125866930211325235126834762342735100059455824716219407298943034904557597558838283010622221532238614475452717530617398233487886851752972118619216819786192090089256283703664561064161029201491179252560648817660503597109363724703276153e-38\n", - " 4.247022722410804419376555988420890478022961844140698832502802209176853239791326546975205237207522784199184574739101263024098319605088938120060751453366167647999498835169156157761517052135064708078007575104768422815492994759984228055340106361185858249750490041309990970039015619331412012655888266964360061484344e-40\n", - " 1.868703916839301636433991983814798084041260680813062167703974489640411076321188705937274582614530198326958862639315282970586220024318386546703210821368780680045169321037734953127040203889619179667947760710861287978105724676488221230605426806145994657169056244430018735097731576858657237884256266391681523690044e-42\n", - " 5.341661287329951560833334130682459712499060077051503332389742165513988775646294326127385293067093784542226170113478581126166226599005438142330734676951381619199991308747011410457414719928096883163663437736894849347613630370329730871706840048278093649562194998906531149853475013299904996043890240743386508527292e-45\n", - " 7.443957219522503694396382288664120355320000389926980009095516622847781786486907766722634063428361348603922764251321869812291790183333704026753461167713615944191499282247043992336523156544327933588813020425948385407582926576303898903451482496359493357994743106079004508668692260644000994647677540101673786393047e-48" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "σ = svdvals(A)" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# got singular values from ranging from 1 to 10⁻⁴⁸!" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## Fibonnaci function" - ] - }, - { - "cell_type": "code", - "execution_count": 20, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -673,115 +391,36 @@ "name": "stdout", "output_type": "stream", "text": [ - "f(0) = 1\n", - "f(1) = 1\n", - "f(2) = 2\n", - "f(3) = 3\n", - "f(4) = 5\n", - "f(5) = 8\n", - "f(6) = 13\n", - "f(7) = 21\n", - "f(8) = 34\n", - "f(9) = 55\n", - "f(10) = 89\n" + "fib(0) = 1\n", + "fib(1) = 1\n", + "fib(2) = 2\n", + "fib(3) = 3\n", + "fib(4) = 5\n", + "fib(5) = 8\n", + "fib(6) = 13\n", + "fib(7) = 21\n", + "fib(8) = 34\n", + "fib(9) = 55\n", + "fib(10) = 89\n" ] } ], "source": [ - "fib(n) = n < 2 ? 1 : fib(n-1) + fbin(n-2) # recursive function definition\n", - "for i = 0:10\n", - " println(\"f($i) = $(f(i))\") # string interpolation\n", + "fib(n) = n < 2 ? 1 : fib(n-1) + fib(n-2) # recursive fibonacci function\n", + "\n", + "for n = 0:10\n", + " println(\"fib($n) = $(fib(n))\") # string interpolation\n", "end" ] }, { "cell_type": "code", - "execution_count": 62, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(::#47) (generic function with 1 method)" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# anonymous function definition\n", - "f = x -> x^2 - 3" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f(2)" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "-23//9" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f(2//3)" - ] - }, - { - "cell_type": "code", - "execution_count": 67, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "-2.5555555555555554" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f(2/3)" - ] + "outputs": [], + "source": [] }, { "cell_type": "markdown", @@ -794,7 +433,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -808,7 +447,7 @@ "\\(A::AbstractArray{T,2} where T, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg/generic.jl:805" ] }, - "execution_count": 69, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -819,7 +458,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -827,13 +466,13 @@ { "data": { "text/html": [ - "ODE.ode45(fn, y0, tspan) at /home/gibson/.julia/v0.5/ODE/src/runge_kutta.jl:219" + "ODE.ode45(fn, y0, tspan) at /home/gibson/.julia/v0.6/ODE/src/runge_kutta.jl:219" ], "text/plain": [ - "ODE.ode45(fn, y0, tspan) at /home/gibson/.julia/v0.5/ODE/src/runge_kutta.jl:219" + "ODE.ode45(fn, y0, tspan) in ODE at /home/gibson/.julia/v0.6/ODE/src/runge_kutta.jl:219" ] }, - "execution_count": 10, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -844,9 +483,10 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 20, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true }, "outputs": [ { @@ -858,7 +498,7 @@ "cond(A::AbstractArray{T,2} where T) in Base.LinAlg at linalg/dense.jl:911" ] }, - "execution_count": 68, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } diff --git a/3-fast-as-C.ipynb b/3-fast-as-C.ipynb index 4b4360d..4aa80db 100644 --- a/3-fast-as-C.ipynb +++ b/3-fast-as-C.ipynb @@ -4,10 +4,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Julia is as fast as C or Fortran\n", + "# Julia is fast" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Performance benchmarks, general algorithms\n", + "\n", + "Micro-benchmark codes testing iteration, recursion, matrix operations, and I/O, \n", + "using identical algorithms in 11 languages. Smaller is better. Results normalized so C = 1.\n", "\n", "\n", - "## Case study: simulation of the Kuramoto-Sivashinksy equation\n", + "![language benchmarks plot](figs/benchmarks.svg)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Performance benchmark, Kuramoto-Sivashinksy equation\n", "\n", "The Kuramoto-Sivashinsky (KS) equation is a nonlinear time-evolving partial differential equation (PDE) on a 1d spatial domain.\n", "\n", @@ -18,18 +36,26 @@ "where $x$ is space, $t$ is time, and subscripts indicate differentiation. We assume a spatial domain $x \\in [0, L_x]$ with periodic boundary conditions and initial condition $u(x,0) = u_0(x)$. \n", "\n", "A simulation for $u_0 = \\cos(x) + 0.1 \\sin x/8 + 0.01 \\cos x/32$ and $L_x = 64\\pi$.\n", - "![alternative text](figs/ksdynamics.svg)\n", + "![Kuramoto-Sivashinsky u(x,t)](figs/ksdynamics.svg)\n", "\n", "## The benchmark algorithm: KS-CNAB2\n", "\n", - "We implemented the same numerical integration method for the KS equation in six languages. The method uses finite Fourier expansions to discretize space and semi-implicit finite-differencing to discretize time, specifically the 2nd-order rank-Nicolson/Adams-Bashforth (CNAB2) timestepping formula. All languages use the same FFTW library for the Fourier transforms. \n" + "We implemented the same numerical integration method for the KS equation in six languages. The method uses finite Fourier expansions to discretize space and semi-implicit finite-differencing to discretize time, specifically the 2nd-order Crank-Nicolson/Adams-Bashforth (CNAB2) time-stepping formula. This transforms the above PDE to the following iterated linear algebra problem\n", + "\n", + "\n", + "\\begin{equation*}\n", + "A \\, u^{n+1} = B \\, u^n + \\frac{3 \\Delta t}{2} N^n - \\frac{\\Delta t}{2}N^{n-1}\n", + "\\end{equation*}\n", + "\n", + "where $u^n$ is a vector of Fourier coefficients at time $t = n \\Delta t$, $A$ and $B$ are diagonal matrices related to the linear terms in the PDE, and $N^n$ is the Fourier transform of the nonlinear term $u u_x$ at $t = n \\Delta t$. \n", + "See my [julia-pde-benchmark talk](https://github.com/johnfgibson/julia-pde-benchmark/blob/master/1-Kuramoto-Sivashinksy-benchmark.ipynb) talk for mathematical details. All languages use the same FFTW library for the Fourier transforms." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Benchmark results: execution time versus simulation size $N_x$\n", + "## Benchmark results: execution time versus number of gridpoints $N_x$\n", "\n", "![alternate text](figs/cputime_vs_size.svg)\n", "\n", @@ -4673,28 +4699,14 @@ "collapsed": true }, "source": [ - "## Benchmark codes\n", + "## KS-CNAB2 benchmark codes\n", "\n", - " * [ksbenchmark.py](codes/ksbenchmark.py), Python\n", - " * [ksbenchmark.m](codes/ksbenchmark.m), Matlab\n", - " * [ksbenchmark.jl](codes/ksbenchmark.jl), Julia \n", - " * [ksbenchmark.c](codes/ksbenchmark.c), C\n", - " * [ksbenchmark.cpp](codes/ksbenchmark.cpp), C++ \n", - " * [ksbenchmark.f90](codes/ksbenchmark.f90), Fortran\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Julia performance benchmarks\n", - "\n", - "Micro-benchmark codes testing iteration, recursion, matrix operations, and I/O, \n", - "using identical algorithms in 11 languages. Smaller is better. Results normalized so C = 1.\n", - "\n", - "\n", - "![language benchmarks plot](figs/benchmarks.svg)\n" + " * [ksbenchmark.py](ks-codes/ksbenchmark.py), Python\n", + " * [ksbenchmark.m](ks-codes/ksbenchmark.m), Matlab\n", + " * [ksbenchmark.jl](ks-codes/ksbenchmark.jl), Julia \n", + " * [ksbenchmark.c](ks-codes/ksbenchmark.c), C\n", + " * [ksbenchmark.cpp](ks-codes/ksbenchmark.cpp), C++ \n", + " * [ksbenchmark.f90](ks-codes/ksbenchmark.f90), Fortran\n" ] }, { diff --git a/4-just-in-time-compilation.ipynb b/4-just-in-time-compilation.ipynb index 9187bed..efb7e51 100644 --- a/4-just-in-time-compilation.ipynb +++ b/4-just-in-time-compilation.ipynb @@ -4,17 +4,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# How does Julia look like Matlab but run like C?\n", + "# Julia's secret sauce\n", "\n", - " * Just-in-time compilation (JIT)\n", - " * user-level code is compiled to machine code on-the-fly\n", + "Julia looks/feels like Matlab/Python but runs like C/Fortran. How?\n", + "\n", + " * **Just-in-time compilation** (JIT)\n", + " - user-level code is compiled to machine code on-the-fly \n", " \n", " \n", " \n", - " * Meticulous type system designed to maximize impact of JIT\n", - " * type inference\n", - " * type stability\n", - " * multiple dispatch\n", + " * **Meticulous type system**\n", + " - designed to maximize impact of JIT\n", + " - type inference\n", + " - type stability\n", + " - multiple dispatch\n", "\n" ] }, @@ -22,36 +25,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Just-in-time compilation \n", - "\n", - "Define a simple function and run it twice" + "## Just-in-time compilation " ] }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "f (generic function with 1 method)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f(x) = x^3 - 2" - ] - }, - { - "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -60,14 +39,15 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.005786 seconds (1.19 k allocations: 74.612 KiB)\n", - " 0.000002 seconds (5 allocations: 176 bytes)\n" + " 0.012669 seconds (299 allocations: 17.557 KiB)\n", + " 0.000005 seconds (5 allocations: 176 bytes)\n" ] } ], "source": [ - "@time f(0.3);\n", - "@time f(0.3);" + "f(x) = x^3 - 2 # define a simple function\n", + "@time f(0.3); # run it once\n", + "@time f(0.3); # run it again" ] }, { @@ -76,9 +56,8 @@ "source": [ "The second evaluation is thousands of times faster than the first! Why? \n", "\n", - "The first run includes a compilation of user code to machine code.\n", - "\n", - "The second run just executes the machine code. \n", + " * first run includes a compilation of user code to machine code\n", + " * second run just executes the machine code\n", "\n", "### Compilation to machine code, in stages" ] @@ -196,12 +175,12 @@ "source": [ "## Type inference\n", "\n", - "Julia figures out the types of untyped variables --crucial for compiling to machine code!" + "Julia infers the types of untyped variables --crucial for compiling to machine code!" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -211,7 +190,7 @@ "output_type": "stream", "text": [ "\n", - "define double @julia_f_60969(double) #0 !dbg !5 {\n", + "define double @julia_f_60989(double) #0 !dbg !5 {\n", "top:\n", " %1 = fmul double %0, %0\n", " %2 = fmul double %1, %0\n", @@ -227,7 +206,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -237,7 +216,7 @@ "output_type": "stream", "text": [ "\n", - "define float @julia_f_61165(float) #0 !dbg !5 {\n", + "define float @julia_f_60993(float) #0 !dbg !5 {\n", "top:\n", " %1 = fmul float %0, %0\n", " %2 = fmul float %1, %0\n", @@ -253,7 +232,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -263,7 +242,7 @@ "output_type": "stream", "text": [ "\n", - "define i64 @julia_f_61125(i64) #0 !dbg !5 {\n", + "define i64 @julia_f_60995(i64) #0 !dbg !5 {\n", "top:\n", " %1 = mul i64 %0, %0\n", " %2 = mul i64 %1, %0\n", @@ -279,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -289,32 +268,35 @@ "output_type": "stream", "text": [ "\n", - "define void @julia_f_61027(%Rational* noalias nocapture sret, %Rational* nocapture readonly dereferenceable(16)) #0 !dbg !5 {\n", + "define void @julia_f_60996(%Complex.62* noalias nocapture sret, %Complex.62* nocapture readonly dereferenceable(16)) #0 !dbg !5 {\n", "top:\n", - " %2 = alloca %Rational, align 8\n", - " %3 = alloca %Rational, align 8\n", - " %4 = alloca %Rational, align 8\n", - " %5 = alloca %Rational, align 8\n", - " %6 = alloca %Rational, align 8\n", - " call void @\"julia_*_61025\"(%Rational* noalias nocapture nonnull sret %3, %Rational* nocapture nonnull readonly %1, %Rational* nocapture nonnull readonly %1)\n", - " call void @\"julia_*_61025\"(%Rational* noalias nocapture nonnull sret %2, %Rational* nocapture nonnull readonly %3, %Rational* nocapture nonnull readonly %1)\n", - " %7 = getelementptr inbounds %Rational, %Rational* %2, i64 0, i32 0\n", - " %8 = load i64, i64* %7, align 8\n", - " %9 = getelementptr inbounds %Rational, %Rational* %2, i64 0, i32 1\n", - " %10 = load i64, i64* %9, align 8\n", - " call void @julia_Type_61013(%Rational* noalias nocapture nonnull sret %5, i8** inttoptr (i64 140039431844048 to i8**), i64 %8, i64 %10)\n", - " call void @julia_Type_61013(%Rational* noalias nocapture nonnull sret %6, i8** inttoptr (i64 140039431844048 to i8**), i64 2, i64 1)\n", - " call void @julia_-_61026(%Rational* noalias nocapture nonnull sret %4, %Rational* nocapture nonnull readonly %5, %Rational* nocapture nonnull readonly %6)\n", - " %11 = bitcast %Rational* %4 to i8*\n", - " %12 = bitcast %Rational* %0 to i8*\n", - " call void @llvm.memcpy.p0i8.p0i8.i32(i8* %12, i8* %11, i32 16, i32 8, i1 false)\n", + " %2 = getelementptr inbounds %Complex.62, %Complex.62* %1, i64 0, i32 0\n", + " %3 = load i64, i64* %2, align 8\n", + " %4 = mul i64 %3, %3\n", + " %5 = getelementptr inbounds %Complex.62, %Complex.62* %1, i64 0, i32 1\n", + " %6 = load i64, i64* %5, align 8\n", + " %7 = mul i64 %6, %6\n", + " %8 = sub i64 %4, %7\n", + " %9 = shl i64 %6, 1\n", + " %10 = mul i64 %3, %9\n", + " %11 = mul i64 %8, %3\n", + " %12 = mul i64 %10, %6\n", + " %13 = mul i64 %8, %6\n", + " %14 = mul i64 %3, %10\n", + " %15 = add i64 %14, %13\n", + " %16 = add i64 %11, -2\n", + " %17 = sub i64 %16, %12\n", + " %.sroa.0.0..sroa_idx = getelementptr inbounds %Complex.62, %Complex.62* %0, i64 0, i32 0\n", + " store i64 %17, i64* %.sroa.0.0..sroa_idx, align 8\n", + " %.sroa.2.0..sroa_idx1 = getelementptr inbounds %Complex.62, %Complex.62* %0, i64 0, i32 1\n", + " store i64 %15, i64* %.sroa.2.0..sroa_idx1, align 8\n", " ret void\n", "}\n" ] } ], "source": [ - "@code_llvm f(7//1) # f applied to a Rational, much more complex" + "@code_llvm f(7 + 2im) # f applied to a Complex is more complex" ] }, { @@ -408,13 +390,12 @@ "source": [ "## Multiple dispatch\n", "\n", - "Most functions have multiple versions optimized for their particular input types. Selection is done at compile time\n", - "if types can be inferred, run time if they can't." + "Many built-in functions have multiple versions specialized for particular input types. Selection is done at compile time if types can be inferred, run time if they can't." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -422,71 +403,111 @@ { "data": { "text/html": [ - "52 methods for generic function ^:" + "92 methods for generic function \\:
  • \\(a::Float16, b::Float16) at float.jl:372
  • \\(F::Base.SparseArrays.SPQR.Factorization{Float64}, B::Union{Array{Complex{Float64},1}, Array{Complex{Float64},2}}) at sparse/spqr.jl:167
  • \\(x::Number, A::UpperTriangular) at linalg/triangular.jl:562
  • \\(x::Number, A::Base.LinAlg.UnitUpperTriangular) at linalg/triangular.jl:565
  • \\(x::Number, A::LowerTriangular) at linalg/triangular.jl:562
  • \\(x::Number, A::Base.LinAlg.UnitLowerTriangular) at linalg/triangular.jl:565
  • \\(A::Number, B::AbstractArray) at arraymath.jl:44
  • \\(A::Union{BitArray{1}, BitArray{2}}, B::Union{BitArray{1}, BitArray{2}}) at bitarray.jl:1192
  • \\(::Union{LowerTriangular, UpperTriangular}, ::RowVector) at linalg/triangular.jl:1656
  • \\(::Union{Base.LinAlg.UnitLowerTriangular, Base.LinAlg.UnitUpperTriangular}, ::RowVector) at linalg/triangular.jl:1657
  • \\(::Diagonal, ::RowVector) at linalg/bidiag.jl:362
  • \\(::Bidiagonal{#s267} where #s267<:Number, ::RowVector{#s266,V} where V<:(AbstractArray{T,1} where T) where #s266<:Number) at linalg/bidiag.jl:364
  • \\(::Bidiagonal, ::RowVector) at linalg/bidiag.jl:363
  • \\(::SparseMatrixCSC, ::RowVector) at sparse/linalg.jl:876
  • \\(mat::AbstractArray{T,2} where T, rowvec::RowVector) at linalg/rowvector.jl:234
  • \\(T::SymTridiagonal, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) at linalg/tridiag.jl:163
  • \\(A::LowerTriangular, B::LowerTriangular) at linalg/triangular.jl:1392
  • \\(A::Base.LinAlg.UnitLowerTriangular, B::LowerTriangular) at linalg/triangular.jl:1400
  • \\(A::UpperTriangular, B::UpperTriangular) at linalg/triangular.jl:1408
  • \\(A::Base.LinAlg.UnitUpperTriangular, B::UpperTriangular) at linalg/triangular.jl:1416
  • \\{TA<:Number, Tb<:Number}(A::Base.LinAlg.UnitLowerTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1764
  • \\{TA<:Number, Tb<:Number}(A::Base.LinAlg.UnitLowerTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1755
  • \\(A::Base.LinAlg.UnitLowerTriangular, b::SparseVector) at sparse/sparsevector.jl:1783
  • \\{TA<:Number, Tb<:Number}(A::Base.LinAlg.UnitUpperTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1764
  • \\{TA<:Number, Tb<:Number}(A::Base.LinAlg.UnitUpperTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1755
  • \\(A::Base.LinAlg.UnitUpperTriangular, b::SparseVector) at sparse/sparsevector.jl:1783
  • \\(A::Union{Base.LinAlg.UnitLowerTriangular, Base.LinAlg.UnitUpperTriangular}, B::AbstractArray{T,1} where T) at linalg/triangular.jl:1568
  • \\{TA<:Number, Tb<:Number}(A::LowerTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1764
  • \\{TA<:Number, Tb<:Number}(A::LowerTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1755
  • \\(A::LowerTriangular, b::SparseVector) at sparse/sparsevector.jl:1783
  • \\{TA<:Number, Tb<:Number}(A::UpperTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1764
  • \\{TA<:Number, Tb<:Number}(A::UpperTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) at sparse/sparsevector.jl:1755
  • \\(A::UpperTriangular, b::SparseVector) at sparse/sparsevector.jl:1783
  • \\{T}(L::LowerTriangular{T,#s267} where #s267<:(SparseMatrixCSC{T,Ti} where Ti<:Integer), B::SparseMatrixCSC) at sparse/linalg.jl:290
  • \\{T}(U::UpperTriangular{T,#s267} where #s267<:(SparseMatrixCSC{T,Ti} where Ti<:Integer), B::SparseMatrixCSC) at sparse/linalg.jl:291
  • \\(A::Union{LowerTriangular, UpperTriangular}, B::AbstractArray{T,1} where T) at linalg/triangular.jl:1579
  • \\(A::Union{Base.LinAlg.UnitLowerTriangular, Base.LinAlg.UnitUpperTriangular}, B::AbstractArray{T,2} where T) at linalg/triangular.jl:1568
  • \\(A::Union{LowerTriangular, UpperTriangular}, B::AbstractArray{T,2} where T) at linalg/triangular.jl:1579
  • \\(A::Union{Hermitian{Complex{Float64},SparseMatrixCSC{Complex{Float64},Int64}}, Hermitian{Float64,SparseMatrixCSC{Float64,Int64}}, Symmetric{Float64,SparseMatrixCSC{Float64,Int64}}}, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) at sparse/cholmod.jl:1620
  • \\(A::Union{Hermitian{#s267,#s266}, Symmetric{#s267,#s266}} where #s266<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) where #s267, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) at linalg/symmetric.jl:284
  • \\(Da::Diagonal, Db::Diagonal) at linalg/diagonal.jl:319
  • \\(D::Diagonal, A::AbstractArray{T,2} where T) at linalg/diagonal.jl:317
  • \\(D::Diagonal, b::AbstractArray{T,1} where T) at linalg/diagonal.jl:318
  • \\{TA<:Number, TB<:Number}(A::Bidiagonal{TA}, B::Union{AbstractArray{TB,1}, AbstractArray{TB,2}}) at linalg/bidiag.jl:566
  • \\(A::Bidiagonal, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) at linalg/bidiag.jl:569
  • \\(A::SparseMatrixCSC, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) at sparse/linalg.jl:857
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:L}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1550
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:U}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1553
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtL}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1557
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:UP}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1561
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:D}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1566
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:LD}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1569
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DU}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1572
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtLD}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1575
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DUP}, B::Base.SparseArrays.CHOLMOD.Dense) at sparse/cholmod.jl:1579
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:L}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1550
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:U}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1553
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtL}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1557
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:UP}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1561
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:D}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1566
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:LD}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1569
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DU}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1572
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtLD}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1575
  • \\{T}(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DUP}, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1579
  • \\(L::Base.SparseArrays.CHOLMOD.FactorComponent, b::Array{T,1} where T) at sparse/cholmod.jl:1588
  • \\(L::Base.SparseArrays.CHOLMOD.FactorComponent, B::Array{T,2} where T) at sparse/cholmod.jl:1591
  • \\(L::Base.SparseArrays.CHOLMOD.FactorComponent, B::Union{SparseMatrixCSC{Tv,Ti}, SparseVector{Tv,Ti}} where Ti where Tv) at sparse/cholmod.jl:1594
  • \\(A::AbstractArray{T,2} where T, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) at linalg/generic.jl:805
  • \\(a::AbstractArray{T,1} where T, b::AbstractArray) at linalg/generic.jl:822
  • \\{T<:Union{Float32, Float64}}(A::Union{Base.LinAlg.QRCompactWY{T,M} where M<:(AbstractArray{T,2} where T), Base.LinAlg.QRPivoted{T,S} where S<:(AbstractArray{T,2} where T), Base.LinAlg.QR{T,S} where S<:(AbstractArray{T,2} where T)}, BIn::Union{Array{Complex{T},1}, Array{Complex{T},2}}) at linalg/qr.jl:828
  • \\{T<:Union{Float32, Float64}}(F::Base.LinAlg.LQ{T,S} where S<:(AbstractArray{T,2} where T), B::Union{Array{Complex{T},1}, Array{Complex{T},2}}) at linalg/lq.jl:226
  • \\{T<:Float64}(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Array{Complex{T},1}) at sparse/cholmod.jl:1603
  • \\{T<:Float64}(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Array{Complex{T},2}) at sparse/cholmod.jl:1604
  • \\{T<:Union{Float32, Float64}}(F::Factorization{T}, B::Union{Array{Complex{T},1}, Array{Complex{T},2}}) at linalg/factorization.jl:36
  • \\{TA, TB}(A::Union{Base.LinAlg.QRCompactWY{TA,M} where M<:(AbstractArray{T,2} where T), Base.LinAlg.QRPivoted{TA,S} where S<:(AbstractArray{T,2} where T), Base.LinAlg.QR{TA,S} where S<:(AbstractArray{T,2} where T)}, B::Union{AbstractArray{TB,1}, AbstractArray{TB,2}}) at linalg/qr.jl:809
  • \\{TA, Tb}(A::Base.LinAlg.LQ{TA,S} where S<:(AbstractArray{T,2} where T), b::Union{Base.ReshapedArray{Tb,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{Tb,1}, SubArray{Tb,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}) at linalg/lq.jl:208
  • \\{TA, TB}(A::Base.LinAlg.LQ{TA,S} where S<:(AbstractArray{T,2} where T), B::Union{Base.ReshapedArray{TB,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{TB,2}, SubArray{TB,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}) at linalg/lq.jl:216
  • \\{T<:Union{Complex{Float64}, Float64}}(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Base.SparseArrays.CHOLMOD.Dense{T}) at sparse/cholmod.jl:1600
  • \\{T<:Union{Complex{Float64}, Float64}}(L::Base.SparseArrays.CHOLMOD.Factor{T}, b::Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) at sparse/cholmod.jl:1605
  • \\{T<:Union{Complex{Float64}, Float64}}(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) at sparse/cholmod.jl:1606
  • \\(L::Base.SparseArrays.CHOLMOD.Factor, B::Base.SparseArrays.CHOLMOD.Sparse) at sparse/cholmod.jl:1607
  • \\(L::Base.SparseArrays.CHOLMOD.Factor, B::Union{SparseMatrixCSC{Tv,Ti}, SparseVector{Tv,Ti}} where Ti where Tv) at sparse/cholmod.jl:1609
  • \\{T<:Union{Complex{Float64}, Float64}}(F::Base.SparseArrays.SPQR.Factorization{T}, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}}) at sparse/spqr.jl:178
  • \\(F::Base.SparseArrays.SPQR.Factorization, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) at sparse/spqr.jl:182
  • \\(F::Factorization, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) at linalg/factorization.jl:45
  • \\(J1::UniformScaling, J2::UniformScaling) at linalg/uniformscaling.jl:162
  • \\{T<:Number}(A::Union{Base.LinAlg.AbstractTriangular{T,S} where S<:(AbstractArray{T,2} where T), Bidiagonal{T}}, J::UniformScaling) at linalg/uniformscaling.jl:163
  • \\(J::UniformScaling, A::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) at linalg/uniformscaling.jl:164
  • \\(A::AbstractArray{T,2} where T, J::UniformScaling) at linalg/uniformscaling.jl:165
  • \\(x::Number, J::UniformScaling) at linalg/uniformscaling.jl:167
  • \\(p::Base.DFT.Plan, x::AbstractArray) at dft.jl:233
  • \\(x, y) at operators.jl:457
" ], "text/plain": [ - "# 52 methods for generic function \"^\":\n", - "^(x::Bool, y::BigInt) in Base.GMP at gmp.jl:484\n", - "^(x::Bool, y::Bool) in Base at bool.jl:92\n", - "^(a::Float16, b::Float16) in Base at float.jl:372\n", - "^(x::Float16, y::Integer) in Base.Math at math.jl:703\n", - "^(x::Float64, y::Float64) in Base.Math at math.jl:699\n", - "^(x::Float64, y::Integer) in Base.Math at math.jl:701\n", - "^(x::Float32, y::Float32) in Base.Math at math.jl:700\n", - "^(x::Float32, y::Integer) in Base.Math at math.jl:702\n", - "^(x::BigInt, y::Bool) in Base.GMP at gmp.jl:481\n", - "^(x::BigInt, y::BigInt) in Base.GMP at gmp.jl:480\n", - "^(x::BigInt, y::UInt64) in Base.GMP at gmp.jl:455\n", - "^(x::BigInt, y::Integer) in Base.GMP at gmp.jl:482\n", - "^(x::BigFloat, y::BigInt) in Base.MPFR at mpfr.jl:507\n", - "^(x::BigFloat, y::BigFloat) in Base.MPFR at mpfr.jl:489\n", - "^(x::BigFloat, y::Union{UInt16, UInt32, UInt64, UInt8}) in Base.MPFR at mpfr.jl:495\n", - "^(x::BigFloat, y::Union{Int16, Int32, Int64, Int8}) in Base.MPFR at mpfr.jl:501\n", - "^(x::BigFloat, y::Unsigned) in Base.MPFR at mpfr.jl:513\n", - "^(x::BigFloat, y::Integer) in Base.MPFR at mpfr.jl:512\n", - "^(::Irrational{:e}, x::Irrational) in Base at irrationals.jl:219\n", - "^(::Irrational{:e}, x::Rational) in Base at irrationals.jl:219\n", - "^(::Irrational{:e}, x::Integer) in Base at irrationals.jl:219\n", - "^(::Irrational{:e}, x::Number) in Base at irrationals.jl:219\n", - "^(x::Integer, y::Bool) in Base at bool.jl:93\n", - "^(z::Complex{T}, p::Complex{T}) where T<:AbstractFloat in Base at complex.jl:571\n", - "^(z::T, p::T) where T<:Complex in Base at complex.jl:620\n", - "^(z::Complex{#s45} where #s45<:AbstractFloat, n::Bool) in Base at complex.jl:680\n", - "^(z::Complex{#s45} where #s45<:Integer, n::Bool) in Base at complex.jl:681\n", - "^(z::Complex{#s45} where #s45<:Rational, n::Bool) in Base at rational.jl:427\n", - "^(z::Complex, n::Bool) in Base at complex.jl:677\n", - "^(z::Complex{#s45} where #s45<:AbstractFloat, n::Integer) in Base at complex.jl:683\n", - "^(z::Complex{#s45} where #s45<:Integer, n::Integer) in Base at complex.jl:685\n", - "^(z::Complex{#s45} where #s45<:Rational, n::Integer) in Base at rational.jl:429\n", - "^(z::Complex, n::Integer) in Base at complex.jl:678\n", - "^(x::Rational, n::Integer) in Base at rational.jl:420\n", - "^(x::T, y::Rational) where T<:AbstractFloat in Base at rational.jl:424\n", - "^(x::Complex{T}, y::Rational) where T<:AbstractFloat in Base at rational.jl:425\n", - "^(x::Number, y::Rational) in Base at rational.jl:423\n", - "^(x::Integer, y::BigInt) in Base.GMP at gmp.jl:483\n", - "^(x::T, p::T) where T<:Integer in Base at intfuncs.jl:194\n", - "^(x::Number, p::Integer) in Base at intfuncs.jl:195\n", - "^(x::Irrational, y::Irrational) in Base at irrationals.jl:109\n", - "^(x::T, y::T) where T<:Number in Base at promotion.jl:339\n", - "^(x::Number, y::Number) in Base at promotion.jl:281\n", - "^(s::AbstractString, r::Integer) in Base at strings/types.jl:154\n", - "^(A::Symmetric{T,S} where S<:(AbstractArray{T,2} where T), p::Integer) where T<:Real in Base.LinAlg at linalg/symmetric.jl:461\n", - "^(A::Hermitian, p::Integer) in Base.LinAlg at linalg/symmetric.jl:477\n", - "^(A::AbstractArray{T,2}, p::Integer) where T in Base.LinAlg at linalg/dense.jl:332\n", - "^(A::Symmetric{T,S} where S<:(AbstractArray{T,2} where T), p::Real) where T<:Real in Base.LinAlg at linalg/symmetric.jl:468\n", - "^(A::Hermitian{T,S} where S<:(AbstractArray{T,2} where T), p::Real) where T in Base.LinAlg at linalg/symmetric.jl:489\n", - "^(A::AbstractArray{T,2}, p::Real) where T in Base.LinAlg at linalg/dense.jl:335\n", - "^(A::AbstractArray{T,2} where T, p::Number) in Base.LinAlg at linalg/dense.jl:391\n", - "^(x, p::Integer) in Base at intfuncs.jl:196" + "# 92 methods for generic function \"\\\":\n", + "\\(a::Float16, b::Float16) in Base at float.jl:372\n", + "\\(F::Base.SparseArrays.SPQR.Factorization{Float64}, B::Union{Array{Complex{Float64},1}, Array{Complex{Float64},2}}) in Base.SparseArrays.SPQR at sparse/spqr.jl:167\n", + "\\(x::Number, A::UpperTriangular) in Base.LinAlg at linalg/triangular.jl:562\n", + "\\(x::Number, A::Base.LinAlg.UnitUpperTriangular) in Base.LinAlg at linalg/triangular.jl:565\n", + "\\(x::Number, A::LowerTriangular) in Base.LinAlg at linalg/triangular.jl:562\n", + "\\(x::Number, A::Base.LinAlg.UnitLowerTriangular) in Base.LinAlg at linalg/triangular.jl:565\n", + "\\(A::Number, B::AbstractArray) in Base at arraymath.jl:44\n", + "\\(A::Union{BitArray{1}, BitArray{2}}, B::Union{BitArray{1}, BitArray{2}}) in Base at bitarray.jl:1192\n", + "\\(::Union{LowerTriangular, UpperTriangular}, ::RowVector) in Base.LinAlg at linalg/triangular.jl:1656\n", + "\\(::Union{Base.LinAlg.UnitLowerTriangular, Base.LinAlg.UnitUpperTriangular}, ::RowVector) in Base.LinAlg at linalg/triangular.jl:1657\n", + "\\(::Diagonal, ::RowVector) in Base.LinAlg at linalg/bidiag.jl:362\n", + "\\(::Bidiagonal{#s267} where #s267<:Number, ::RowVector{#s266,V} where V<:(AbstractArray{T,1} where T) where #s266<:Number) in Base.LinAlg at linalg/bidiag.jl:364\n", + "\\(::Bidiagonal, ::RowVector) in Base.LinAlg at linalg/bidiag.jl:363\n", + "\\(::SparseMatrixCSC, ::RowVector) in Base.SparseArrays at sparse/linalg.jl:876\n", + "\\(mat::AbstractArray{T,2} where T, rowvec::RowVector) in Base.LinAlg at linalg/rowvector.jl:234\n", + "\\(T::SymTridiagonal, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) in Base.LinAlg at linalg/tridiag.jl:163\n", + "\\(A::LowerTriangular, B::LowerTriangular) in Base.LinAlg at linalg/triangular.jl:1392\n", + "\\(A::Base.LinAlg.UnitLowerTriangular, B::LowerTriangular) in Base.LinAlg at linalg/triangular.jl:1400\n", + "\\(A::UpperTriangular, B::UpperTriangular) in Base.LinAlg at linalg/triangular.jl:1408\n", + "\\(A::Base.LinAlg.UnitUpperTriangular, B::UpperTriangular) in Base.LinAlg at linalg/triangular.jl:1416\n", + "\\(A::Base.LinAlg.UnitLowerTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1764\n", + "\\(A::Base.LinAlg.UnitLowerTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1755\n", + "\\(A::Base.LinAlg.UnitLowerTriangular, b::SparseVector) in Base.SparseArrays at sparse/sparsevector.jl:1783\n", + "\\(A::Base.LinAlg.UnitUpperTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1764\n", + "\\(A::Base.LinAlg.UnitUpperTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1755\n", + "\\(A::Base.LinAlg.UnitUpperTriangular, b::SparseVector) in Base.SparseArrays at sparse/sparsevector.jl:1783\n", + "\\(A::Union{Base.LinAlg.UnitLowerTriangular, Base.LinAlg.UnitUpperTriangular}, B::AbstractArray{T,1} where T) in Base.LinAlg at linalg/triangular.jl:1568\n", + "\\(A::LowerTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1764\n", + "\\(A::LowerTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1755\n", + "\\(A::LowerTriangular, b::SparseVector) in Base.SparseArrays at sparse/sparsevector.jl:1783\n", + "\\(A::UpperTriangular{TA,#s267} where #s267<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1764\n", + "\\(A::UpperTriangular{TA,#s267} where #s267<:(AbstractArray{T,2} where T), b::SparseVector{Tb,Ti} where Ti<:Integer) where {TA<:Number, Tb<:Number} in Base.SparseArrays at sparse/sparsevector.jl:1755\n", + "\\(A::UpperTriangular, b::SparseVector) in Base.SparseArrays at sparse/sparsevector.jl:1783\n", + "\\(L::LowerTriangular{T,#s267} where #s267<:(SparseMatrixCSC{T,Ti} where Ti<:Integer), B::SparseMatrixCSC) where T in Base.SparseArrays at sparse/linalg.jl:290\n", + "\\(U::UpperTriangular{T,#s267} where #s267<:(SparseMatrixCSC{T,Ti} where Ti<:Integer), B::SparseMatrixCSC) where T in Base.SparseArrays at sparse/linalg.jl:291\n", + "\\(A::Union{LowerTriangular, UpperTriangular}, B::AbstractArray{T,1} where T) in Base.LinAlg at linalg/triangular.jl:1579\n", + "\\(A::Union{Base.LinAlg.UnitLowerTriangular, Base.LinAlg.UnitUpperTriangular}, B::AbstractArray{T,2} where T) in Base.LinAlg at linalg/triangular.jl:1568\n", + "\\(A::Union{LowerTriangular, UpperTriangular}, B::AbstractArray{T,2} where T) in Base.LinAlg at linalg/triangular.jl:1579\n", + "\\(A::Union{Hermitian{Complex{Float64},SparseMatrixCSC{Complex{Float64},Int64}}, Hermitian{Float64,SparseMatrixCSC{Float64,Int64}}, Symmetric{Float64,SparseMatrixCSC{Float64,Int64}}}, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1620\n", + "\\(A::Union{Hermitian{#s267,#s266}, Symmetric{#s267,#s266}} where #s266<:(Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) where #s267, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) in Base.LinAlg at linalg/symmetric.jl:284\n", + "\\(Da::Diagonal, Db::Diagonal) in Base.LinAlg at linalg/diagonal.jl:319\n", + "\\(D::Diagonal, A::AbstractArray{T,2} where T) in Base.LinAlg at linalg/diagonal.jl:317\n", + "\\(D::Diagonal, b::AbstractArray{T,1} where T) in Base.LinAlg at linalg/diagonal.jl:318\n", + "\\(A::Bidiagonal{TA}, B::Union{AbstractArray{TB,1}, AbstractArray{TB,2}}) where {TA<:Number, TB<:Number} in Base.LinAlg at linalg/bidiag.jl:566\n", + "\\(A::Bidiagonal, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg/bidiag.jl:569\n", + "\\(A::SparseMatrixCSC, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.SparseArrays at sparse/linalg.jl:857\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:L}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1550\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:U}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1553\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtL}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1557\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:UP}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1561\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:D}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1566\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:LD}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1569\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DU}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1572\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtLD}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1575\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DUP}, B::Base.SparseArrays.CHOLMOD.Dense) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1579\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:L}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1550\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:U}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1553\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtL}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1557\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:UP}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1561\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:D}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1566\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:LD}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1569\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DU}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1572\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:PtLD}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1575\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent{T,:DUP}, B::Base.SparseArrays.CHOLMOD.Sparse) where T in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1579\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent, b::Array{T,1} where T) in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1588\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent, B::Array{T,2} where T) in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1591\n", + "\\(L::Base.SparseArrays.CHOLMOD.FactorComponent, B::Union{SparseMatrixCSC{Tv,Ti}, SparseVector{Tv,Ti}} where Ti where Tv) in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1594\n", + "\\(A::AbstractArray{T,2} where T, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg/generic.jl:805\n", + "\\(a::AbstractArray{T,1} where T, b::AbstractArray) in Base.LinAlg at linalg/generic.jl:822\n", + "\\(A::Union{Base.LinAlg.QRCompactWY{T,M} where M<:(AbstractArray{T,2} where T), Base.LinAlg.QRPivoted{T,S} where S<:(AbstractArray{T,2} where T), Base.LinAlg.QR{T,S} where S<:(AbstractArray{T,2} where T)}, BIn::Union{Array{Complex{T},1}, Array{Complex{T},2}}) where T<:Union{Float32, Float64} in Base.LinAlg at linalg/qr.jl:828\n", + "\\(F::Base.LinAlg.LQ{T,S} where S<:(AbstractArray{T,2} where T), B::Union{Array{Complex{T},1}, Array{Complex{T},2}}) where T<:Union{Float32, Float64} in Base.LinAlg at linalg/lq.jl:226\n", + "\\(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Array{Complex{T},1}) where T<:Float64 in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1603\n", + "\\(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Array{Complex{T},2}) where T<:Float64 in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1604\n", + "\\(F::Factorization{T}, B::Union{Array{Complex{T},1}, Array{Complex{T},2}}) where T<:Union{Float32, Float64} in Base.LinAlg at linalg/factorization.jl:36\n", + "\\(A::Union{Base.LinAlg.QRCompactWY{TA,M} where M<:(AbstractArray{T,2} where T), Base.LinAlg.QRPivoted{TA,S} where S<:(AbstractArray{T,2} where T), Base.LinAlg.QR{TA,S} where S<:(AbstractArray{T,2} where T)}, B::Union{AbstractArray{TB,1}, AbstractArray{TB,2}}) where {TA, TB} in Base.LinAlg at linalg/qr.jl:809\n", + "\\(A::Base.LinAlg.LQ{TA,S} where S<:(AbstractArray{T,2} where T), b::Union{Base.ReshapedArray{Tb,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{Tb,1}, SubArray{Tb,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}) where {TA, Tb} in Base.LinAlg at linalg/lq.jl:208\n", + "\\(A::Base.LinAlg.LQ{TA,S} where S<:(AbstractArray{T,2} where T), B::Union{Base.ReshapedArray{TB,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{TB,2}, SubArray{TB,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}) where {TA, TB} in Base.LinAlg at linalg/lq.jl:216\n", + "\\(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Base.SparseArrays.CHOLMOD.Dense{T}) where T<:Union{Complex{Float64}, Float64} in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1600\n", + "\\(L::Base.SparseArrays.CHOLMOD.Factor{T}, b::Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) where T<:Union{Complex{Float64}, Float64} in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1605\n", + "\\(L::Base.SparseArrays.CHOLMOD.Factor{T}, B::Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) where T<:Union{Complex{Float64}, Float64} in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1606\n", + "\\(L::Base.SparseArrays.CHOLMOD.Factor, B::Base.SparseArrays.CHOLMOD.Sparse) in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1607\n", + "\\(L::Base.SparseArrays.CHOLMOD.Factor, B::Union{SparseMatrixCSC{Tv,Ti}, SparseVector{Tv,Ti}} where Ti where Tv) in Base.SparseArrays.CHOLMOD at sparse/cholmod.jl:1609\n", + "\\(F::Base.SparseArrays.SPQR.Factorization{T}, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}}) where T<:Union{Complex{Float64}, Float64} in Base.SparseArrays.SPQR at sparse/spqr.jl:178\n", + "\\(F::Base.SparseArrays.SPQR.Factorization, B::Union{Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}, Union{Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,2}, SubArray{T,2,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray}} where T) in Base.SparseArrays.SPQR at sparse/spqr.jl:182\n", + "\\(F::Factorization, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg/factorization.jl:45\n", + "\\(J1::UniformScaling, J2::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:162\n", + "\\(A::Union{Base.LinAlg.AbstractTriangular{T,S} where S<:(AbstractArray{T,2} where T), Bidiagonal{T}}, J::UniformScaling) where T<:Number in Base.LinAlg at linalg/uniformscaling.jl:163\n", + "\\(J::UniformScaling, A::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg/uniformscaling.jl:164\n", + "\\(A::AbstractArray{T,2} where T, J::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:165\n", + "\\(x::Number, J::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:167\n", + "\\(p::Base.DFT.Plan, x::AbstractArray) in Base.DFT at dft.jl:233\n", + "\\(x, y) in Base at operators.jl:457" ] }, - "execution_count": 1, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "methods(^)" + "methods(\\)" ] }, { @@ -500,7 +521,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Comparison: iterated logistic map in Julia, C++, and Matlab\n", + "## Iterated logistic map in Julia, C++, and Matlab\n", "\n", "Define $f(x) = 4x(1-x)$, generate millionth iterate function $f^N(x)$" ] @@ -542,7 +563,7 @@ "f(x) = 4*x*(1-x)\n", "\n", "# use iterator function to constuct millionth iterate of logistic map\n", - "fᴺ = iterator(f, 10^6) " + "fᴺ = iterator(f, 10^6) " ] }, { @@ -572,8 +593,8 @@ } ], "source": [ - "@time fᴺ(0.67)\n", - "@time fᴺ(0.67)" + "@time fᴺ(0.67);\n", + "@time fᴺ(0.67);" ] }, { diff --git a/5-julia-goes-beyond.ipynb b/5-julia-goes-beyond.ipynb index 3a2e51d..570c9e1 100644 --- a/5-julia-goes-beyond.ipynb +++ b/5-julia-goes-beyond.ipynb @@ -4,32 +4,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Julia goes beyond Matlab, C, and Fortran\n", + "# Julia goes beyond \n", "\n", - "Julia is a modern dynamic language with\n", + "Julia does things you don't expect from a scientific language\n", "\n", - " * rich set of built-in types (numeric and general-purpose)\n", - " * user-defined types\n", - " * run-time type system \n", - " * metaprogramming (code that processes code)\n" + " * rational and arbitrary precision computations\n", + " * user-defined algebraic types and operators\n", + " * generic programming\n", + " * symbolic mathematics\n", + " * metaprogramming (code operating on code)\n", + " * internet-enabled\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Built-in numeric types\n", - "\n", - "Julia's built-in numeric types include a wide range of integers, floating-point numbers, rationals, and complex numbers. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Integer types\n", - "\n", - "`Int8, Int16, Int32, Int64, BigInt` plus unsigned integers `UInt8, ...`." + "## Rational and arbitrary-precision computations " ] }, { @@ -39,17 +30,10 @@ "collapsed": false }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "typeof(2) = Int64\n" - ] - }, { "data": { "text/plain": [ - "(4611686018427387904, -9223372036854775808)" + "f (generic function with 1 method)" ] }, "execution_count": 1, @@ -58,13 +42,13 @@ } ], "source": [ - "@show typeof(2)\n", - "2^62, 2^63 # first is ok, second overflows!" + "# define simple function\n", + "f(x) = x^2 - 3" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 67, "metadata": { "collapsed": false }, @@ -73,103 +57,171 @@ "name": "stdout", "output_type": "stream", "text": [ - "typeof(n) = BigInt\n" + "f(2) = 1\n", + "f(2 / 3) = -2.5555555555555554\n", + "f(2 // 3) = -23//9\n", + "f(2 + 3im) = -8 + 12im\n", + "f(2.3 + 4.2im) = -15.350000000000001 + 19.32im\n", + "f(2 // 3 + 4 // 5 * im) = -719//225 + 16//15*im\n", + "f(BigFloat(2 // 3)) = -2.555555555555555555555555555555555555555555555555555555555555555555555555555548\n", + "f(BigFloat(2 // 3) + BigFloat(4 // 5) * im) = -3.195555555555555555555555555555555555555555555555555555555555555555555555555556 + 1.066666666666666666666666666666666666666666666666666666666666666666666666666675im\n" ] - }, - { - "data": { - "text/plain": [ - "(4611686018427387904, 9223372036854775808)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ - "n = BigInt(2)\n", - "@show typeof(n)\n", - "n^62, n^63 # no overflow here..." + "# apply f(x) to different built-in numeric types\n", + "\n", + "@show f(2); # Int64\n", + "@show f(2/3) # Float64\n", + "@show f(2//3) # Rational\n", + "@show f(2 + 3im) # Complex{Int64}\n", + "@show f(2.3 + 4.2im) # Complex{Float64}\n", + "@show f(2//3 + (4//5)*im) # Complex{Rational{Int64}}\n", + "@show f(BigFloat(2//3)) # BigFloat\n", + "@show f(BigFloat(2//3) + BigFloat(4//5)*im); # Complex{BigFloat}" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 69, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "text/plain": [ - "9990020930143845079440327643300335909804291390541816917715292738631458324642573483274873313324496504031643944455558549300187996607656176562908471354247492875198889629873671093246350427373112479265800278531241088737085605287228390164568691026850675923517914697052857644696801524832345475543250292786520806957770971741102232042976351205330777996897925116619870771785775955521720081320295204617949229259295623920965797873558158667525495797313144806249260261837941305080582686031535134178739622834990886357758062104606636372130587795322344972010808486369541401835851359858035603574021872908155566580607186461268972839794621842267579349638893357247588761959137656762411125020708704870465179396398710109200363934745618090601613377898560296863598558024761448933047052222860131377095958357319485898496404572383875170702242332633436894423297381877733153286944217936125301907868903603663283161502726139934152804071171914923903341874935394455896301292197256417717233543544751552379310892268182402452755752094704642185943862865632744231332084742221551493315002717750064228826211822549349600557457334964678483269180951895955769174509673224417740432840455882109137905375646772139976621785265057169854834562487518322383250318645505472114369934167981678170255122812978065194806295405339154657479941297499190348507544336414505631657396006693382427316434039580121280260984212247514207834712224831410304068603719640161855741656439472253464945249700314509890093162268952744428705476425472253167514521182231455388374308232642200633025137533129365164341725206256155311794738619142904761445654927128418175183531327052975495370561438239573227939673030106077456848477427832195349227983836436163764742969545906672369124136325932123335643135894465219101882123829740907916386023235450959388766736403229577993901152154448003637215069115591111996001530589107729421032230424262035693493216052927569625858445822354594645276923108197305806280326516736449343761732409753342333289730282959173569273013286423311759605230495171677033163709522256952460402143387655197644016528148022348331881097559421960476479388520198541017348985948511005469246617234143135309938405923268953586538886974427008607028635502085562029549352480050796521564919683265106744100967822951954161617717542997520009887307377876210685890770969411610438028623950445323789591870760289260393489826100774887672852918106468489143893649064784591211612193300707900537059042188012856559403699070888032966871611655961232331998310923225082866180321880439447572986762096935819784385927969250123326935194693207724335527365566248223787833888074999276831633440318604463618703789784313032843823470410944306591471928341190975185239212327674384990561563688432939039442002617530976850605132937101449086396141620556053547335569926700941375271829142407234267937565069765567475934101310225342830080409079587329544213551307302050171598424230760469209732907290141606353960880559202357376885647852240092777111489134492416995607171786298436533978180869474106751111353523711540436599310889697485658800887861974934357929246204051767246012250618404011966289872673803070498361217974484679100747846356194664829224736134115135567179291781968056053726484141128347858241259121954601184412409349782963317042002530418661694962318735860652485410222211869544223788289189712080514575141361964805369723164570564998479537657174548128597406077339158775332355215609435919275199351014222246963017013717419337504919295363295101115292951836282819191821651676455946515828048984256116748150367805267878662716999649296949377045794876146628110929982020737013330324451005385378551188803474148198665114579322684900993000236736168555294173442059925371965244997925483159343706343970371809611470323074186985035054722289027174850333368328300281132910841693150457389933183934593292994942796015309756118708918929528449074243284767006243171171622731766606796101967802204564589015899524704741001158110963633731329388356868949408759334176909387806398584647300588928175998844477486130063153068760070084837267527789777356830042778902772105683833021470279728595336332110564064263909724579949686162908019604141753935768876587992428549912151737924270343248648414247456838889541893241450987505759403013249697541696955330296880219304874163501097920036210238768275176369980977614979636096704348140124130683576879904997436596296495705459524735382000363770324894982103331332913562315169854410415317054193928234723398848453552173203688088312100943941434938282203549650281530751087098604681224802973825631244989331965296202372608586509050307993308652001231671915182765742095689513136184095412121473786311042897717861448158316965848766949554826252504961227044714712229620274682362909803877469376987358942125441792355298387479830450253909788733469732603097544156474805473732732767248652759034995336354126953900458854988683574927864615252040800490114785892289085443353996994780867471613519785838571456421583171193004117989440790268346357550339888086725127883577297626499213827436573992927302238792576924232785487201297255386071968303782483063725899808484638503828356258403917311872694381464553651690062530023217591343084755215901475299149215296944362366910833233693767993138209275870024246238331218236715236772098417187703860172308522448043176333602759733161201262248323085329288986154559221427378507410978822244729512663572225567169779409767341543017289268332635077451210167869121334465680739797372711461919299938118178827541421792926883790285430909942441260511945849237909966329550263865701114884142266162969810073652710928504579470861508094054577797864301504899958634164700528220562786008864025709432444254044034243140203812074857537999016066465520986980790589347320243050635907363821521280600041827529325485247927904235727598574209554632363830932428250711518801775633739811523761994686263270550635099851254333875594601540900862014293625673738331693082328854327001487476635118830885173775268819526360165345900556160767713453617655450974424979076063906093300028416964847594027046669468486593636425428625241644836652173922586528474244952363302305311413449332339822336551611431469131900170488226836525916399723912626616140205707996727383529597479125488961419287261259757561701592645823541151922177253919651034344793680369057003813056557866311011476313189571556336518727757991908862890765494952019474922148851417079252352394293801701149485239005844358329748769279941586384640877265901749104933238853465429979253900561311562288241147192158137210120267399648622831610430287268739840335142120299516610846193164688075944526965248570070554452152547493450434852917987512185973647190461515413582582139040172118295702327537027389787793506904044938553587650503557155872873201596885061331145477101575699375441097493374115991199114962726801718038950907803041184400075585468560976965669584325627283327416418044590727844680051360774154288412712456353383625469068936430902068216750459819321744513362913853983154560610459692604508787700304184579153478291725762810632722108035826060904572460619204237580363147200158749075361633785243462298769917887808671453928846572417223504887766803869453474588831907597355292800709241471370696647029530700507083091412492771404776193459007315206233634226128137074504162520473449597415678882003845446774388950379192344594171245510231738995030348421937088083329709108176561010708693158020695060096428352046647333361163476664106311247065173802510599409266908984046663298613648854871230659903565772327667696057187057276814394932559371368029375974604116075641599919402266794230681485723361363592903676841480358328093127506801111571615062761556607158236612268544268330274725849294875852089790850962835235527978491475563744318483993474633300330972497012808415900969455190375849945750379465019166009861502794606130794726898507849610303884846035423392175449505876157130344700415823080225786693300512126831846009510203543174323783292176865976076275412421892808138872880175813109296020150746331979561488146333412674896256883784351178477592660577212734269328382384711746083782209939646612308343952169576581065423771981899573840430315930973215059901371218399762585055435459516340055149080565627330475362528926945020226163130902420795006258931367813005222140742964756194053782182452833097021554210929638693005460011927178302761563505715735405672652524175925436371863471836292012162456662093642074605500842449347289830619506077570528754845277680661218358066130291463288932240701043887535007851997159198390084654596996197138399723495863749806582439384615049184048485819193560667125968018574877819561104335238420873417743385185735663101292757409280586840011804854994149478736882949368786637202682607198707656286436753775709560349718397405565505269425218354301348910785234517795519757516484711545928466003754558485470994737493796615841040414239875763335201795518644856632201598556341934286668912522153446348791218159622744525372314219184738770596659942181275403613660438538829201810204850917717791485256026242529802492309229562177062770027659288158473994804255067730903420043491632913588644627415318468517462580180901314477358637486528221274450661883667873545037139535563260349778209992416559111602097437491432360787879331015052417047437823553506205617017572175387061751192919715660363028302343819584946594328460482931960515124867123604625653903565173322856758210937541222674223847046664733620292824834065137814475367747671882220098389682019784216724015491253360436437847479770633657905418133523010804559958547379685864708937791659340223795537045273849435441105983887969741143051069401271065628507537039823308867819868298171415185218271493613110963984021912448323423901392553811725954153209435002954807640291982765741514042956666953177304003358701503703497424897898108939453026976878231557938158928996868766367603579055322794822757659104812835219745724022347569914650240636730492833286151875049129873457930874999488048681250802904606446223569562767964898914869924201946458521355165709887118378290437174375625282606140534611987395334677500936625746765638459629521872262777473480491233965194281353725068660782076683862565487279038020486778099991754380815789820825255566234983933217491493864966284116889874665005414748264599972752003370084542592544301190399041231752771993767799847551279448012913842034323154888137932524887172099381195722163148101670274877379161830968937348720168944903299658932511996504109653674618914861599481632040891930577238630396311858213341337110096389113836596895914715370925073998461682046426447290788976525593505136546978364603183820619560578517561504972661817649030304982138534738696212234626114043035600967042547012317360449724623287452575151198771801585742829389025650825988275495110865424704218337264023078045681651420517807418196096401513461760794362769612228126118610912766814880500950963889032877710837651051900076128058473969258768737937306664751387942217354694021157675557568970168734104342446525522568974329716152742558110503495045718931752447070410307760830365536714180388723602948872805590752711115590794756926903978519601939790311768070356801944936106850640568519290645048685535628256787225734544146565541187816717729850612874044620890718502108518025052924590359814117522720320552642597751984410742492179242039080014606225999422109717176118746845802673724801365603866909971071347255859723217027554055085082090418987534829222004178998475030519537179062001509333023023881806519182405550818672164711702307529922652228033820404113386625335815042934115143980939986416365633923620673874259342713444701242702722227197573203194489407856355511639619115985907995399083680129468810771595938084908111251938016414866250141095286680914828503123938960997659175977315432797173945762560365023587931559926170852315074247849814256564693008105061976397395591733545472917526739598790117477449217745771908169489543790314578152667389689410604588351445026130645637237687631129964576699475767340673583537218704935177320214779403972566532581731659202199752942824432778102107532160580104432121067208273876100778332426569624765621063126975491546224343978061253999313893915782008560011171319773443130412998215626985098895722778159524505640435534979855872234521991778419564106622122049039017886737997905270552302412002780864726282517525092332555378737792434915926182736151242592242725872699844014132567954640475742451126102857394193479716383187138370722782422619384021010896271281685732287764210298708895557148397743497418109849633633910397778254225179400022143485886207532122646613614487518735142494469575836744785028013193033901949738716163113800864093408529297729741462836142201120573027427309566658849884965134295188287937016147499504685185116851709758146686994243673140036992381232483920618628663037402351333907771907455224248515748726136075048020960976567862025232356273025557054386729189255571672396871991669651834736987440295942395220863481341484029838939485593327256627318194137735451891544384960966451285561476772564932516923822003229733483331726306200059192067441136913243720403578098676440894672367334549903905283682411422011886949265324531399323764100563996744273693606586851243936737155349696358970470706246743064681511525580772367129358691546677179280674603197443660235664811911175324239792271603213932690900431433572511935591785787438931910836722219749594385217682817205537433987939372420698422586002026702204502341484432231418159837133223467338185995720215212999066855318593765188122815644349842897804044474253173187198249880219056124756835053121936684091113613451740380400041281474527453687530122741226292549431008458868082627169312891414237466973215688306962596297824286828479758198382340345222708757345393897126910174835179971320922911746435455023926629385455742630840473245989374307836875864087914312319228307304975362481708579849870550314357368660453504099679685389802578477910419231052505144696885248726344365369453921372194715998156624454330562798282777349584666757018969900985110164491047993602922961645132995224271404908186948080818144765441476070834943179921347693205775493727581146799477819807044909830887802418354528095576268178221596410712216509995196961932368766959924336939018675830477951348564967496643006978548120861013029026482640402316621018258604172734501970838570222765188590393123627245232006535983907604127898007628220791246163222713051906678029644273228763460060289213316094057396003523608149487855784819923604033709243920895785100953666245538047118419834068589948934026518132741951749125192568729824877982938351710224389886834755562218214866075518628420508441240855088408499405226548535776678864444680504301285988469915501692621173049550268365498340637943341584797390666973271817567111123445212701138287733170703648843560692535012857745637166012927846194135756491508269323010063559087991831480179606664893606864875569154700860602703909640090514609360513037280984989976472934205971076104365706670369636731086616773064361333184164332104073479210775688703754193241101764488071673304176268034528127946729244452919161882095335945667158450941476301537032588109254921620602423998383939639570864268315557737923542830477169053850721939927266830567227442913752680237178175908437269780708099690192695002592421020485193953805155158663266418230452129371046840218806665165231438597498081621420148051355131865453014871298249938624272154345372391802215126115854861975398983110888196358875565793593310597895992053240439684590862193232015232257668969509415398393721308747247732944493053757577694362680328316055060353219685001207195191671426063364056179006218671604638684249067247572855764071631397824639188693789635247708232195940400450829593853651517642510129335911478337995658501766175785429966837417247838838645892319920041196390925354226074199412181950196251598137076467085022479201649174056794994024967593003129957099742026595785390010668925864718839026058417582396497109522944729874183273952292247592156943695682037477731049514128818431210317476600507328613045698141876738705835589680568812062901672389707603039549708273418484069037215179862266581929555420755695654139976814235027490594662592770986044588793675562143709648705744665319814772892177290937799834952769995145061157204394128687121538756842568036622321369508041915737469009917048039885947260486258684449762362318724085339500204989295963618739437408918888568903691128987832325892601331155260901131911962536529384643993465666490271108522834470184768391573623895239732781158399355178022076177450755929138381468526577309152290502509145241134006895661073761320484545645543610238773087594308408699782711315425513472058939339453013548135244176754131385012770024156261936169649709944156933541666590935759784775946468953923516229723673403650805886186209888123677098892944769654360324668874429740130365009770291603536426502844618046128137324006034947889707723262364927515545013731797277615272236008596598736693841467685030166103516988390995570659331713219574003251046303604196295276316972893990945091279545361627593486818455830168634280653205028729105026906643726170661778439311154737149759096116144493812106746037251452616271615212935043141124155849847574091878458410177325030553207237661933970254488335435069113577757765584551136714634629223114497809546405079026755854160954260557783406467356189398503160303046687522579708387993298769182986822970667356246647939653365454544268386404322650296028881298557242198187208040207296077496128886166773288838620609977925416822156713703667391333322086520871904473048593017466793578173830832406459585018177267447690376523178740142636502172093102619263046542112708094769682392207383797482057034793196525139221370199877543931178601238198924707047629587501516299912892933069025343575488251454948469328322898202956506903308470482517744131166464774750723477861518055343466858040987132273453081836794564364430155246274158100731069323080734901590517008753654169600998911569598454702926629374049393677685285723039754691181021469267219333846563053673846537824970049506209403506606244584412627902384242785280551599253188262786271531989567165398385428909311577122438618119724985644233907558812574859217687149721341833317289714977694982117227337669878361212788465289349470676995146785835955074121568375032937822352378665103266923449887690619794116574936418347914823983988002067649967289214983486424468737742286438563064425223461210639952418146166111391586408089740413945879849036682695488197808766021959964846771145698159367567904768112047055740602351237499012258567357965107013251562237843754994747236883821060645969480067316032381351192535148322216761442411144695361182838761115795911310362420741510826322048374540404146990479647073113428368300158247350712922331119789013179701651764033036649606749518628656836032556353205617386602749327417799524243899880581322620681297935615821202736455540414428705857131835238951742471239050758919353490570268302812810704750603181709274434806504843422134152201579626776393642698168851485545206897802036257496043584180735523092410264794436423951474855853980259367017205588767985309971043290404884467541701918912275745752402121744890326681160647837985004639864193645792082105266057503921195311457592621400830660301768120178560328650220171413811642155986702637531155554821958388905393544592180587272433749899242041542816666821846374863337522729077994208960545264863862516411718049112903451378140021506899966762080732651380427792460930762263446994159193223142565029996403134383564087766689537759857473403120477091886596355579944643688205981242040477802943803932459722207541739589596692034052161680837588921636048584789929663903107349945667027830610483130862872680661015300745521669893857383782690975026078691245077096697355744971063878379083608563324774011426604588797712843335089341752120843133549155805945217503766728136818989701075795034975931147113851177529084708382646930943663837851488798723688771534770333456570254004964039987760745951276145936694695508877796318400093229973736770518512573233230127134210937068680950264362225510872877141635601716276267040168996816287213326422268377855327887822310204539762272583014902609710931194995685950834598509258803363019551891846212990914920155838298607568190737375958573348261713794703592503972126314316192159571451081744034114847904386601284244643362857392442316767411036417557776991886719910511456902002905771699177497748359489810115650557253501242519595931483440417116222205504589671636754478042893488385500275211497526246421122010774862333476246182576597178403980436617669560567049936789350370893174617560282074679058110806280348893136768773133234721178541038289213080580369302853910384704528018344058313252744129928355732704028220901951560054449764635932065083760864473989692709381120504251266930834839999956860216356148940167442564078469350152730245749435722205009403680810321136898946443062041659878360406811331217133504960504944165472883926378607868385731515366373416312566122603235977742473940324793478740770352725436532455308438250865693864330020957120719122826689237609273524467576647981797622831709248187143189474449928329051087066866263901462754600186683583622062445553828867143621415773638244852570664653423002003386087185683387095282564231892337305827467825102905239214464117590700082862874915647212962223100149842773910585262712095702633425139069275541249925826898755913048489059083665047386569005980726512682643809800080768716889749767005747228285165430935469423701296901225200041775975278099341399149455675655415791289014141807180970818010668626000334746783492116354330741766556197865412944331579610856733907210970815247694360208231077377319255935591919361509992241851869762511821971598449396422923222586939583205849537600173388242916813257003198490942805178528782842560021549233235032941872842601109623432061485547579038802849228139397130979180562447703494299530585909415031237400213445431607049538809117870571045686211621069655023028886617060314580222884344906879404890744067164557565160596397488164744575409400891911083945126233990453364772541741331330821153758983077390402549739751620825837898384996200874749622331436354553599710472896396262914675542281735624665804212007275401273982269651802596130334329792865330063654175676003369688243926391280713123038760076039957285658333390838592534249337153070457471482743551037417147024006867419141874398230449202772009682282474640802779068104741602882613440803256607530230172031981070796893051954145239327661783905828943932146148894821695918579498502263858318704473290299790473193753803543920285706350672484245008920689712995308213747335255792982565803469779504974053329506220584586976782376547358092670753891736652401577525890202354883227480678961328466821865972869785592672826822656457577958670571097728396605101516387163615321918203652729897586807786443044896628670393188486921931839182927172554503767733076856308657600665342622254535057629030862718937364327448083558928220102374951534665262857504222950995446014428801859061443379679142717413278286975998259993819084477469775220567898395378570154609157695006128689610825519373486612568225010585752375050450503641627804406676905130564807191014132285063482665726828511933059433717373899623654715534816591630086838520905491060194596758223701911513581142071521220673521948777069521608531717477580542554138038978873716058241771904252401056370661792996395808706717083872950238057238547610495061732689587948240319569499000594593719849004104550034415014066154526994609094441391439071866309009249691812468813088126242358787204856089608234037677437509496768451058059579977189006605354903359961784245121096144877063187466910292356627771165203522647016166296488083808997887687769308220856530068153940856748041349469491870704992660210066455819832886130678021460369893174499939107231230405088342485383796742208847060385334943928147519685791292174441917386398739155908915859310750449419969425856920503891277550092560029225566028245733054164370482965351532695757311986033153861767127072322962670122480612322195488891848040149357757131302308897501348573600357134307046628157178720021578705983302856401851403674168523579202306440644159448586566246905477964086572462611834063213025126230896949713642334585419351128373132157232101577687884147986752364441711298472354763142715850293434746434127230225735792097083439910498394019789979870351837786010778667226102241684498686398874227580631272581474396676719404444290071284914286251867085092358453277091441099575357659812178523756848934429670368686181229928033433456696493460770903592231804072849827640955873854491455416480621098619090449331761288966135325413062313991971462332768487224184119088841054819270878948939590681778579588918587881426099241767753862382406002451821149035160124492893940578494055432173589779503867792448614769448734671863583817296627073341404027631029821562303142157743379294616649374361560459036060298581224576085252700570061877609582745974967405315882162695982851143006320897730473133461172142945805407178876223011462558510520930761771493278603541262719880522826864107055049364370555816945830840650960447321868266858216903784868032280479864021706315653687489290467679015864709379478762373013822026373788822827564163725872670921602434077279298565679825234946428376162918717556993454693724759744644374586123577768842647346924365909558553162571564807969034052671504760754742676960038255814034354716520834598864538432593908154392918939089896109083521992519053530398359081516289247571043354786424954980741388745386023113329591390636006694539437438690759589121288758007804082911975207095278133335550232776761783391381794105109412999680430103899475051243232331431120663598726618610084717254696908726637456858466646162093223427680684601718516702427671125913080059583053658180035991214447685286534985397013876080817020918472863351368783745251292936294373137797794168163130983688833624592488270042533275310174037401858155192663147588032450316349828944090941459435709839331454077937638533884824056964583661906580362312059760037127664830995125859310214290237306052000883415749724405028863402500028747055233688541068593389039662379913776485715772093749681055718277781429659244251666703110135820625316518906936462663613376783677001574909561444962828205690820330013121289873007855206280915035880334071746233511142838096550651818271177825964147342275885803162473648253508879276299074813242692461714169521068548818275361612786955216412383263246164034602771053052217127416909831714425842754359325193708367920524870186212708574531518197079797624156322369627530303625010057401503185241771381716916959066550480494267473696656051819527729740440782487416353087074803447126307550453018768734511631260002571765708294113447159058326859464022975489061868569715529325333679192904509181338989039531226114077604146341395120253199068720690450654317360799352434791082039695478061926453254644053124586362026016156957888326419910345519741792140396061817459467332211367113051675844970722080638249309285348257747082754939860608508486386549912912220391895379332321814344998458680557267915553525212113907723389037979427485209309504641599639196053296030292739274663906234190084882219800040754390250718430168480866157009022053158273857417267902310193566064243660834080202786392263652453395504706244108957791049298908397097715806857036527872932846771952274875201321856644284239116502005786314083266606564469023548865452436995428173054383481532525156311603438941440612599662264959878769003712412406305072713049361060777519351766684350979095112470377728527045181653556285621656761979382960837252084759203181114384404005114613990326273362146150667851880079327563486444803726963278475818453468509565365380723807736793526242145533088833679727074192838872685484977387306670007551965761431583941102042492623133242770270821710047137152167948872468741189259805623910487138975034203376673344989060052111727844670530521327425332189734978888307943626099125569741350839434061750712876445222039557455150019442996232739317091487905148812821582894579949748623433452865460274945133477267345362799684706610937707688048379567860499887327287273158785195505216946986571759372875984514994087366735699690322212619073372131984972873714823922056361158276719293687517950957314775347729780073870450969204201405641649670458849057466793682155521901095027966023590200629563426621697556166261956721403439803621918243177242110484823901622121433246394511832190737036276362556947535372619436126996645342229589006736952014870393865015087074414735220220770411070088328030731545041085721762448600324574529642445801550887535581445128918173686346116567111050151109714760544361537920207546115073529167935359803746233158035402507293585422134950239655004818456256327794930441926282941363007224150758144477688955569616025741423859274415740477217643474948663183182648210083785749080222199122144694117400270856159095104885845967392332602301843740328702808569782311182460392642129024729192535226787567897868564600570545108945374190649371558894253329703486982693386634574807801078719254129784907155276683405362407228975018016417486695226639468897799829747034414846605232977531914266638473906810541671168066131262918834764800639654762345192540580400257727950859061817326000188356677576249635084512266410557551645134470262083485480776173701923626406384831371842087477223094467978661221649689842322789248762605167898686475739012260361067924661728390016267344059903224026536343550301552983264519865881303942586617734987280231892544278016113318354276103258002393942607858756949485119300715853929843163967575531352484221274814864027297307155457109423432471856970523635672286551516265672389248080659279448953078708153606666741314598260798811278754656313007785743484189610809499119436037561075326359414143476882494692530787790693275290895909945065272071979419682741840819830567497688086236460819345623637702467815073133466197923119939117195979352833117496820500577299938566476984260815518940866776320855483159836188850448339911351505132909703990088919063133375804094886955895465912648104534621430295733375992898959329664444686900648674531661878821297194146191914132978673375283702995190706179924178140249356285006536273771636355569720003246996130665282451695167273161831393867558791278264933758040011059211372270839123518459709107480669852696080909181872978501574064544548264471078633386599113188810137746318984496745989011540334259315347740082110734818471521253374507271538131048296612979081477663269791394570357390537422769779633811568396223208402597025155304734389883109376" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "typeof(f(2)) = Int64\n", + "typeof(f(2 / 3)) = Float64\n", + "typeof(f(2 // 3)) = Rational{Int64}\n", + "typeof(f(2 + 3im)) = Complex{Int64}\n", + "typeof(f(2.3 + 4.2im)) = Complex{Float64}\n", + "typeof(f(2 // 3 + 4 // 5 * im)) = Complex{Rational{Int64}}\n", + "typeof(f(BigFloat(2 // 3))) = BigFloat\n", + "typeof(f(BigFloat(2 // 3) + BigFloat(4 // 5) * im)) = Complex{BigFloat}\n", + "typeof(f(BigInt(2) // 3 + BigInt(4) // 5 * im)) = Complex{Rational{BigInt}}\n" + ] } ], "source": [ - "n^100000 # ...or here" + "# show type of f(x) \n", + "@show typeof(f(2)) # Int64 value\n", + "@show typeof(f(2/3)) # Float64\n", + "@show typeof(f(2//3)) # Rational\n", + "@show typeof(f(2 + 3im)) # Complex{Int64}\n", + "@show typeof(f(2.3 + 4.2im)) # Complex{Float64}\n", + "@show typeof(f(2//3 + (4//5)*im)) # Complex{Rational{Int64}}\n", + "@show typeof(f(BigFloat(2//3))) # BigFloat\n", + "@show typeof(f(BigFloat(2//3) + BigFloat(4//5)*im)) # Complex{BigFloat}\n", + "@show typeof(f(BigInt(2)//3 + BigInt(4)//5*im)); # Complex{Rational{BigInt}}" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 117, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "text/plain": [ - "30103" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "X = (2, 0.6666666666666666, 2//3, 2 + 3im, 2.3 + 4.2im, 2//3 + 4//5*im, 6.666666666666666666666666666666666666666666666666666666666666666666666666666695e-01, 6.666666666666666666666666666666666666666666666666666666666666666666666666666695e-01 + 8.000000000000000000000000000000000000000000000000000000000000000000000000000017e-01im)\n", + "\n", + "typeof(X) = Tuple{Int64,Float64,Rational{Int64},Complex{Int64},Complex{Float64},Complex{Rational{Int64}},BigFloat,Complex{BigFloat}}\n", + "\n", + "x = 2\n", + "f(x) = 1\n", + "typeof(f(x)) = Int64\n", + "\n", + "x = 0.6666666666666666\n", + "f(x) = -2.5555555555555554\n", + "typeof(f(x)) = Float64\n", + "\n", + "x = 2//3\n", + "f(x) = -23//9\n", + "typeof(f(x)) = Rational{Int64}\n", + "\n", + "x = 2 + 3im\n", + "f(x) = -8 + 12im\n", + "typeof(f(x)) = Complex{Int64}\n", + "\n", + "x = 2.3 + 4.2im\n", + "f(x) = -15.350000000000001 + 19.32im\n", + "typeof(f(x)) = Complex{Float64}\n", + "\n", + "x = 2//3 + 4//5*im\n", + "f(x) = -719//225 + 16//15*im\n", + "typeof(f(x)) = Complex{Rational{Int64}}\n", + "\n", + "x = 6.666666666666666666666666666666666666666666666666666666666666666666666666666695e-01\n", + "f(x) = -2.555555555555555555555555555555555555555555555555555555555555555555555555555548\n", + "typeof(f(x)) = BigFloat\n", + "\n", + "x = 6.666666666666666666666666666666666666666666666666666666666666666666666666666695e-01 + 8.000000000000000000000000000000000000000000000000000000000000000000000000000017e-01im\n", + "f(x) = -3.195555555555555555555555555555555555555555555555555555555555555555555555555556 + 1.066666666666666666666666666666666666666666666666666666666666666666666666666675im\n", + "typeof(f(x)) = Complex{BigFloat}\n", + "\n" + ] } ], "source": [ - "# how many digits is that?\n", - "length(string(ans))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Real and complex numbers" + "# do the same thing programmatically\n", + "\n", + "# define a Tuple of numbers of various types\n", + "X = (2, 2/3, 2//3, 2+3im, 2.3 + 4.2im, 2//3 + (4//5)im,\n", + " BigFloat(2//3), BigFloat(2//3) + BigFloat(4//5)*im)\n", + "\n", + "@show X; println()\n", + "@show typeof(X); println()\n", + "\n", + "\n", + "# loop over numbers in X, showing x, f(x), and type of each\n", + "for x in X\n", + " @show x\n", + " @show f(x)\n", + " @show typeof(f(x))\n", + " println()\n", + "end" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "typeof(π) = Irrational{:π}\n" + ] + }, { "data": { "text/plain": [ - "1.5" + "π = 3.1415926535897..." ] }, - "execution_count": 9, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x = 3/2 # Int/Int produces Float. Use div(m,n) or m ÷ n for integer division." + "# Irrationals\n", + "\n", + "@show typeof(π)\n", + "π" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 121, "metadata": { "collapsed": false }, @@ -177,43 +229,51 @@ { "data": { "text/plain": [ - "Float64" + "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724586997" ] }, - "execution_count": 10, + "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(x)" + "setprecision(1024) # change to BigFloats to 1024 bits\n", + "π_big = BigFloat(π)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 120, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "exp(π_big * im) = -1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 9.133833352024599180125447717198210546898671161281024272611229443223053781604030291859166872648904775362024742973537644471991734000035832845360935620115603852146149714433229210713707343080592505078336200427722640480861209277927521424947883394313007151900266906161947352678704040638571335512803354533018167991488e-309im\n" + ] + }, { "data": { "text/plain": [ - "π = 3.1415926535897..." + "-1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 9.133833352024599180125447717198210546898671161281024272611229443223053781604030291859166872648904775362024742973537644471991734000035832845360935620115603852146149714433229210713707343080592505078336200427722640480861209277927521424947883394313007151900266906161947352678704040638571335512803354533018167991488e-309im" ] }, - "execution_count": 11, + "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "π" + "@show exp(π_big*im)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -221,21 +281,21 @@ { "data": { "text/plain": [ - "Irrational{:π}" + "3.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333343e-01" ] }, - "execution_count": 12, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(π)" + "BigFloat(1//3)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 65, "metadata": { "collapsed": false }, @@ -243,21 +303,21 @@ { "data": { "text/plain": [ - "3.141592653589793" + "19950631168807583848837421626835850838234968318861924548520089498529438830221946631919961684036194597899331129423209124271556491349413781117593785932096323957855730046793794526765246551266059895520550086918193311542508608460618104685509074866089624888090489894838009253941633257850621568309473902556912388065225096643874441046759871626985453222868538161694315775629640762836880760732228535091641476183956381458969463899410840960536267821064621427333394036525565649530603142680234969400335934316651459297773279665775606172582031407994198179607378245683762280037302885487251900834464581454650557929601414833921615734588139257095379769119277800826957735674444123062018757836325502728323789270710373802866393031428133241401624195671690574061419654342324638801248856147305207431992259611796250130992860241708340807605932320161268492288496255841312844061536738951487114256315111089745514203313820202931640957596464756010405845841566072044962867016515061920631004186422275908670900574606417856951911456055068251250406007519842261898059237118054444788072906395242548339221982707404473162376760846613033778706039803413197133493654622700563169937455508241780972810983291314403571877524768509857276937926433221599399876886660808368837838027643282775172273657572744784112294389733810861607423253291974813120197604178281965697475898164531258434135959862784130128185406283476649088690521047580882615823961985770122407044330583075869039319604603404973156583208672105913300903752823415539745394397715257455290510212310947321610753474825740775273986348298498340756937955646638621874569499279016572103701364433135817214311791398222983845847334440270964182851005072927748364550578634501100852987812389473928699540834346158807043959118985815145779177143619698728131459483783202081474982171858011389071228250905826817436220577475921417653715687725614904582904992461028630081535583308130101987675856234343538955409175623400844887526162643568648833519463720377293240094456246923254350400678027273837755376406726898636241037491410966718557050759098100246789880178271925953381282421954028302759408448955014676668389697996886241636313376393903373455801407636741877711055384225739499110186468219696581651485130494222369947714763069155468217682876200362777257723781365331611196811280792669481887201298643660768551639860534602297871557517947385246369446923087894265948217008051120322365496288169035739121368338393591756418733850510970271613915439590991598154654417336311656936031122249937969999226781732358023111862644575299135758175008199839236284615249881088960232244362173771618086357015468484058622329792853875623486556440536962622018963571028812361567512543338303270029097668650568557157505516727518899194129711337690149916181315171544007728650573189557450920330185304847113818315407324053319038462084036421763703911550639789000742853672196280903477974533320468368795868580237952218629120080742819551317948157624448298518461509704888027274721574688131594750409732115080498190455803416826949787141316063210686391511681774304792596709376" ] }, - "execution_count": 13, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "Float64(π)" + "BigInt(2)^10000" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 66, "metadata": { "collapsed": false }, @@ -265,21 +325,28 @@ { "data": { "text/plain": [ - "-1.0 + 1.2246467991473532e-16im" + "3011" ] }, - "execution_count": 14, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "exp(π*im)" + "sizeof(string(ans))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## User-defined operators" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 107, "metadata": { "collapsed": false }, @@ -287,21 +354,21 @@ { "data": { "text/plain": [ - "3.141592653589793238462643383279502884197169399375105820974944592307816406286198" + "(::#11) (generic function with 1 method)" ] }, - "execution_count": 15, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pi = BigFloat(π)" + "⊕ = (x,y) -> 3x+y # define ⊕ operator" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 112, "metadata": { "collapsed": false }, @@ -309,21 +376,21 @@ { "data": { "text/plain": [ - "-1.000000000000000000000000000000000000000000000000000000000000000000000000000000 + 1.096917440979352076742130626395698021050758236508687951179005716992142688513354e-77im" + "11//3 + 6//1*im" ] }, - "execution_count": 16, + "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "exp(pi*im)" + "z = (1+2im) ⊕ 2//3 # evaluate Complex{Int64} ⊕ Rational" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 109, "metadata": { "collapsed": false }, @@ -331,21 +398,30 @@ { "data": { "text/plain": [ - "Complex{BigFloat}" + "Complex{Rational{Int64}}" ] }, - "execution_count": 17, + "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(ans)" + "typeof(z) # x,y automatically promoted to common supertype" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Singular values of Hilbert matrix\n", + "\n", + "The Hilbert matrix $A_{ij} = (i+j)^{-1}$ is notoriously ill-conditioned." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 80, "metadata": { "collapsed": false }, @@ -353,21 +429,30 @@ { "data": { "text/plain": [ - "1.727233711018888925077270372560079914223200072887256277004740694033718360632485e-77" + "8×8 Array{Rational{Int64},2}:\n", + " 1//2 1//3 1//4 1//5 1//6 1//7 1//8 1//9 \n", + " 1//3 1//4 1//5 1//6 1//7 1//8 1//9 1//10\n", + " 1//4 1//5 1//6 1//7 1//8 1//9 1//10 1//11\n", + " 1//5 1//6 1//7 1//8 1//9 1//10 1//11 1//12\n", + " 1//6 1//7 1//8 1//9 1//10 1//11 1//12 1//13\n", + " 1//7 1//8 1//9 1//10 1//11 1//12 1//13 1//14\n", + " 1//8 1//9 1//10 1//11 1//12 1//13 1//14 1//15\n", + " 1//9 1//10 1//11 1//12 1//13 1//14 1//15 1//16" ] }, - "execution_count": 10, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "eps(BigFloat)" + "m = 8\n", + "A = [1//(i+j) for i=1:m, j=1:m] # 8 x 8 Hilbert matrix in Rationals" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 81, "metadata": { "collapsed": false }, @@ -375,21 +460,21 @@ { "data": { "text/plain": [ - "1024" + "1.4707555f9" ] }, - "execution_count": 11, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "setprecision(1024)" + "cond(A)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 82, "metadata": { "collapsed": false }, @@ -397,21 +482,38 @@ { "data": { "text/plain": [ - "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724586997" + "16×16 Array{Float64,2}:\n", + " 0.5 0.333333 0.25 … 0.0666667 0.0625 0.0588235\n", + " 0.333333 0.25 0.2 0.0625 0.0588235 0.0555556\n", + " 0.25 0.2 0.166667 0.0588235 0.0555556 0.0526316\n", + " 0.2 0.166667 0.142857 0.0555556 0.0526316 0.05 \n", + " 0.166667 0.142857 0.125 0.0526316 0.05 0.047619 \n", + " 0.142857 0.125 0.111111 … 0.05 0.047619 0.0454545\n", + " 0.125 0.111111 0.1 0.047619 0.0454545 0.0434783\n", + " 0.111111 0.1 0.0909091 0.0454545 0.0434783 0.0416667\n", + " 0.1 0.0909091 0.0833333 0.0434783 0.0416667 0.04 \n", + " 0.0909091 0.0833333 0.0769231 0.0416667 0.04 0.0384615\n", + " 0.0833333 0.0769231 0.0714286 … 0.04 0.0384615 0.037037 \n", + " 0.0769231 0.0714286 0.0666667 0.0384615 0.037037 0.0357143\n", + " 0.0714286 0.0666667 0.0625 0.037037 0.0357143 0.0344828\n", + " 0.0666667 0.0625 0.0588235 0.0357143 0.0344828 0.0333333\n", + " 0.0625 0.0588235 0.0555556 0.0344828 0.0333333 0.0322581\n", + " 0.0588235 0.0555556 0.0526316 … 0.0333333 0.0322581 0.03125 " ] }, - "execution_count": 12, + "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pi = BigFloat(π)" + "m = 16\n", + "A = [1/(i+j) for i=1:m, j=1:m] # 16 x 16 Hilbert matrix in Float64" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 83, "metadata": { "collapsed": false }, @@ -419,21 +521,21 @@ { "data": { "text/plain": [ - "1.112536929253600691545116358666202032109607990231165915276663708443602217406959097927141579506255510282033669865517905502576217080776730054428006192688859410565388996766001165239805073721291818035960782523471251867104187625403325308329079474360245589984295819824250317954385059152437399890443876874974725790226e-308" + "3.01759713532018e17" ] }, - "execution_count": 13, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "eps(BigFloat)" + "cond(A)" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 72, "metadata": { "collapsed": false }, @@ -441,21 +543,37 @@ { "data": { "text/plain": [ - "2.7 + 5.3im" + "16-element Array{Float64,1}:\n", + " 1.43134 \n", + " 0.230837 \n", + " 0.0257046 \n", + " 0.00229807 \n", + " 0.000168752\n", + " 1.02553e-5 \n", + " 5.16871e-7 \n", + " 2.15636e-8 \n", + " 7.40325e-10\n", + " 2.0702e-11 \n", + " 4.64026e-13\n", + " 8.1359e-15 \n", + " 1.01053e-16\n", + " 9.09097e-18\n", + " 7.44178e-18\n", + " 4.74333e-18" ] }, - "execution_count": 31, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "z = 2.7 + 5.3im" + "σ = svdvals(A) # sing. vals of 16 x 16 Hilbert with Float64 arithmetic" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 84, "metadata": { "collapsed": false }, @@ -463,21 +581,49 @@ { "data": { "text/plain": [ - "Complex{Float64}" + "32×32 Array{BigFloat,2}:\n", + " 5.000000000000000000000000000000000000000000000000000000000000000000000000000000e-01 … 3.030303030303030303030303030303030303030303030303030303030303030303030303030301e-02\n", + " 3.333333333333333333333333333333333333333333333333333333333333333333333333333348e-01 2.941176470588235294117647058823529411764705882352941176470588235294117647058825e-02\n", + " 2.500000000000000000000000000000000000000000000000000000000000000000000000000000e-01 2.857142857142857142857142857142857142857142857142857142857142857142857142857153e-02\n", + " 2.000000000000000000000000000000000000000000000000000000000000000000000000000004e-01 2.777777777777777777777777777777777777777777777777777777777777777777777777777772e-02\n", + " 1.666666666666666666666666666666666666666666666666666666666666666666666666666674e-01 2.702702702702702702702702702702702702702702702702702702702702702702702702702707e-02\n", + " 1.428571428571428571428571428571428571428571428571428571428571428571428571428568e-01 … 2.631578947368421052631578947368421052631578947368421052631578947368421052631566e-02\n", + " 1.250000000000000000000000000000000000000000000000000000000000000000000000000000e-01 2.564102564102564102564102564102564102564102564102564102564102564102564102564099e-02\n", + " 1.111111111111111111111111111111111111111111111111111111111111111111111111111109e-01 2.500000000000000000000000000000000000000000000000000000000000000000000000000005e-02\n", + " 1.000000000000000000000000000000000000000000000000000000000000000000000000000002e-01 2.439024390243902439024390243902439024390243902439024390243902439024390243902438e-02\n", + " 9.090909090909090909090909090909090909090909090909090909090909090909090909090958e-02 2.380952380952380952380952380952380952380952380952380952380952380952380952380947e-02\n", + " 8.333333333333333333333333333333333333333333333333333333333333333333333333333369e-02 … 2.32558139534883720930232558139534883720930232558139534883720930232558139534884e-02 \n", + " 7.692307692307692307692307692307692307692307692307692307692307692307692307692324e-02 2.27272727272727272727272727272727272727272727272727272727272727272727272727274e-02 \n", + " 7.142857142857142857142857142857142857142857142857142857142857142857142857142842e-02 2.222222222222222222222222222222222222222222222222222222222222222222222222222212e-02\n", + " ⋮ ⋱ \n", + " 4.545454545454545454545454545454545454545454545454545454545454545454545454545479e-02 … 1.886792452830188679245283018867924528301886792452830188679245283018867924528301e-02\n", + " 4.34782608695652173913043478260869565217391304347826086956521739130434782608698e-02 1.851851851851851851851851851851851851851851851851851851851851851851851851851839e-02\n", + " 4.166666666666666666666666666666666666666666666666666666666666666666666666666685e-02 1.818181818181818181818181818181818181818181818181818181818181818181818181818181e-02\n", + " 3.999999999999999999999999999999999999999999999999999999999999999999999999999998e-02 1.78571428571428571428571428571428571428571428571428571428571428571428571428571e-02 \n", + " 3.846153846153846153846153846153846153846153846153846153846153846153846153846162e-02 1.754385964912280701754385964912280701754385964912280701754385964912280701754386e-02\n", + " 3.703703703703703703703703703703703703703703703703703703703703703703703703703678e-02 … 1.724137931034482758620689655172413793103448275862068965517241379310344827586212e-02\n", + " 3.571428571428571428571428571428571428571428571428571428571428571428571428571421e-02 1.69491525423728813559322033898305084745762711864406779661016949152542372881356e-02 \n", + " 3.448275862068965517241379310344827586206896551724137931034482758620689655172423e-02 1.666666666666666666666666666666666666666666666666666666666666666666666666666679e-02\n", + " 3.333333333333333333333333333333333333333333333333333333333333333333333333333359e-02 1.63934426229508196721311475409836065573770491803278688524590163934426229508198e-02 \n", + " 3.225806451612903225806451612903225806451612903225806451612903225806451612903224e-02 1.612903225806451612903225806451612903225806451612903225806451612903225806451612e-02\n", + " 3.125000000000000000000000000000000000000000000000000000000000000000000000000000e-02 … 1.587301587301587301587301587301587301587301587301587301587301587301587301587298e-02\n", + " 3.030303030303030303030303030303030303030303030303030303030303030303030303030301e-02 1.562500000000000000000000000000000000000000000000000000000000000000000000000000e-02" ] }, - "execution_count": 23, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(z)" + "setprecision(256)\n", + "m = 32\n", + "A = [BigFloat(1//(i+j)) for i=1:m, j=1:m] # 32 x 32 Hilbert matrix of BigFloats" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 86, "metadata": { "collapsed": false }, @@ -485,21 +631,22 @@ { "data": { "text/plain": [ - "2.700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 + 5.300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018im" + "2.177988536256248982724176502736236250615187593069117314154180618696747880495044e+47" ] }, - "execution_count": 32, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "z = BigFloat(\"2.7\") + BigFloat(\"5.3\")im" + "using GenericSVD\n", + "cond(A) # condition number of 32 x 32 Hilbert matrix in 256-bit BigFloat arithmetic" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 75, "metadata": { "collapsed": false }, @@ -507,30 +654,54 @@ { "data": { "text/plain": [ - "Complex{BigFloat}" + "32-element Array{BigFloat,1}:\n", + " 1.621285348850195490535789906811725920847712216973467998238033279942275918566829 \n", + " 3.456868707956789891613041213876354179908321698470618951390175507815876021222828e-01\n", + " 5.407277491128296640365093840241177508410407990952070794308942113082198416774143e-02\n", + " 7.247892437505897653348261847192496707722795681674677645117909694725849544137392e-03\n", + " 8.555573260790678206081844535465751651064962858680634979016093310430705471716238e-04\n", + " 8.990644124463385238106739660580748661579502401006405063554353238251690973865212e-05\n", + " 8.469113465736466761723559913788225531943334162106602942912661761678765250832817e-06\n", + " 7.186343031713320548290344408832921755837525301483893305221488793219514957053055e-07\n", + " 5.512102340080481160972555679834760007138668266975981663850422474639906908831211e-08\n", + " 3.831179294893107144564865729031941718145968107442769118914039692971499201649468e-09\n", + " 2.41692077091005439483947787537410516410728195342639860187641526302909391678774e-10 \n", + " 1.385214026514799384333207696454040129243594070315913733101035163198451439121071e-11\n", + " 7.215118537016004343658651831087853830274786574560959044935861349274091695629143e-13\n", + " ⋮ \n", + " 1.084475414530059171569793825492576302941108268798957947501998738178451089727392e-24\n", + " 2.206162923165380848983593074674952199726885833682423442614758268226203928741027e-26\n", + " 3.952235154451152917754719254643876612163749706791893205890362586305795852001964e-28\n", + " 6.178288776503734172142600194054798399618619228741444459105284859195098777222542e-30\n", + " 8.330880951107681333066341256517462134475588481965658260028544542279086008797679e-32\n", + " 9.545983649487228094299175203062478531562335529636120210007530813362894160477128e-34\n", + " 9.112365936796919191953714026018812451744347733140846657333978516806526737483188e-36\n", + " 7.050139826131511918363111980783083147260720623840746437262578311650227537521416e-38\n", + " 4.247022722410804419376555988420890478022770677863336874935021672549500015766746e-40\n", + " 1.86870391683930163643399198381479808406139448685132623537614538376243897610874e-42 \n", + " 5.341661287329951560833334130682459188695568910938902462881072974537162296849237e-45\n", + " 7.44395721952250369439638228866461910238118407741278541665828086597604386031205e-48 " ] }, - "execution_count": 27, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(z)" + "σ = svdvals(A) # sing. vals of of 32 x 32 Hilbert in 256-bit BigFloats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Singular values of Hilbert matrix\n", - "\n", - "The Hilbert matrix $A_{ij} = (i+j)^{-1}$ is notoriously ill-conditioned!" + "## Linear algebra over rationals" ] }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 76, "metadata": { "collapsed": false }, @@ -538,30 +709,26 @@ { "data": { "text/plain": [ - "8×8 Array{Rational{Int64},2}:\n", - " 1//2 1//3 1//4 1//5 1//6 1//7 1//8 1//9 \n", - " 1//3 1//4 1//5 1//6 1//7 1//8 1//9 1//10\n", - " 1//4 1//5 1//6 1//7 1//8 1//9 1//10 1//11\n", - " 1//5 1//6 1//7 1//8 1//9 1//10 1//11 1//12\n", - " 1//6 1//7 1//8 1//9 1//10 1//11 1//12 1//13\n", - " 1//7 1//8 1//9 1//10 1//11 1//12 1//13 1//14\n", - " 1//8 1//9 1//10 1//11 1//12 1//13 1//14 1//15\n", - " 1//9 1//10 1//11 1//12 1//13 1//14 1//15 1//16" + "5×5 Array{Rational{Int64},2}:\n", + " 1//10 3//5 4//5 1//5 4//5 \n", + " 3//5 4//5 3//10 1//1 7//10\n", + " 7//10 1//1 1//10 9//10 1//1 \n", + " 4//5 1//10 1//5 3//10 7//10\n", + " 4//5 1//5 3//10 9//10 9//10" ] }, - "execution_count": 60, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "m = 8\n", - "A = [1//(i+j) for i=1:m, j=1:m]" + "A = convert(Matrix{Rational{Int64}}, rand(1:10,5,5))/10 # matrix of random Rationals" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 77, "metadata": { "collapsed": false }, @@ -569,22 +736,28 @@ { "data": { "text/plain": [ - "1.4707555f9" + "5-element Array{Rational{Int64},1}:\n", + " 370871//108680\n", + " 722899//163020\n", + " 1880971//326040\n", + " 87289//81510 \n", + " 104303//81510 " ] }, - "execution_count": 61, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# compute condition number of 8 x 8 Hilbert matrix in Float32 arithmetic\n", - "cond(A)" + "# set up Ax=b problem with known solution x\n", + "x = [3//4; 17//3; -1//13; -7//11 ; 3//19]\n", + "b = A*x" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 78, "metadata": { "collapsed": false }, @@ -592,40 +765,27 @@ { "data": { "text/plain": [ - "16×16 Array{Float64,2}:\n", - " 0.5 0.333333 0.25 … 0.0666667 0.0625 0.0588235\n", - " 0.333333 0.25 0.2 0.0625 0.0588235 0.0555556\n", - " 0.25 0.2 0.166667 0.0588235 0.0555556 0.0526316\n", - " 0.2 0.166667 0.142857 0.0555556 0.0526316 0.05 \n", - " 0.166667 0.142857 0.125 0.0526316 0.05 0.047619 \n", - " 0.142857 0.125 0.111111 … 0.05 0.047619 0.0454545\n", - " 0.125 0.111111 0.1 0.047619 0.0454545 0.0434783\n", - " 0.111111 0.1 0.0909091 0.0454545 0.0434783 0.0416667\n", - " 0.1 0.0909091 0.0833333 0.0434783 0.0416667 0.04 \n", - " 0.0909091 0.0833333 0.0769231 0.0416667 0.04 0.0384615\n", - " 0.0833333 0.0769231 0.0714286 … 0.04 0.0384615 0.037037 \n", - " 0.0769231 0.0714286 0.0666667 0.0384615 0.037037 0.0357143\n", - " 0.0714286 0.0666667 0.0625 0.037037 0.0357143 0.0344828\n", - " 0.0666667 0.0625 0.0588235 0.0357143 0.0344828 0.0333333\n", - " 0.0625 0.0588235 0.0555556 0.0344828 0.0333333 0.0322581\n", - " 0.0588235 0.0555556 0.0526316 … 0.0333333 0.0322581 0.03125 " + "5-element Array{Rational{Int64},1}:\n", + " 3//4 \n", + " 17//3 \n", + " -1//13\n", + " -7//11\n", + " 3//19" ] }, - "execution_count": 54, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "using GenericSVD\n", - "\n", - "m = 16\n", - "A = [1/(i+j) for i=1:m, j=1:m]" + "# find numerical solution x̂ of Ax=b problem using backslash (LU decomposition)\n", + "x̂= A\\b" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 79, "metadata": { "collapsed": false }, @@ -633,188 +793,195 @@ { "data": { "text/plain": [ - "3.01759713532018e17" + "5-element Array{Rational{Int64},1}:\n", + " 0//1\n", + " 0//1\n", + " 0//1\n", + " 0//1\n", + " 0//1" ] }, - "execution_count": 55, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "cond(A)" + "# compute error of numerical solution\n", + "x - x̂" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Julia's backslash operator (and LU decomp) works on all rational and floating-point types\n", + "\n", + "LU, QR, SVD, etc. for Float32 and Float64 are redirected to LAPACK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## User-defined type: scalar finite field GF(p)\n", + "\n", + "Galois Field GF(p) is the integers mod p, where p is prime ([example from Andreas Noack, Julia Computing](http://andreasnoack.github.io/talks/2015AprilStanford_AndreasNoack.ipynb))" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Define scalar finite fields GF(p), \n", + "# where p is the prime modulus, T is the integer type\n", + "immutable GF{p,T} <: Number where {p,T<:Integer}\n", + " data::T\n", + " function GF{p,T}(x::Integer) where {p,T<:Integer}\n", + " return new(mod(x, p))\n", + " end\n", + "end\n", + "GF{p}(x::T) where {p,T<:Integer} = GF{p,T}(x)" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 90, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "16-element Array{Float64,1}:\n", - " 1.43134 \n", - " 0.230837 \n", - " 0.0257046 \n", - " 0.00229807 \n", - " 0.000168752\n", - " 1.02553e-5 \n", - " 5.16871e-7 \n", - " 2.15636e-8 \n", - " 7.40325e-10\n", - " 2.0702e-11 \n", - " 4.64026e-13\n", - " 8.1359e-15 \n", - " 1.01053e-16\n", - " 9.09097e-18\n", - " 7.44178e-18\n", - " 4.74333e-18" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "using GenericSVD\n", + "# Define some basic methods for GF(p) that all Julia Numbers must have\n", + "import Base: convert, inv, one, promote_rule, show, zero\n", "\n", - "σ = svdvals(A)" + "function call{p}(::Type{GF{p}}, x::Integer)\n", + " if !isprime(p)\n", + " throw(ArgumentError(\"p must be prime\"))\n", + " end\n", + " return GF{p,typeof(x)}(mod(x, p))\n", + "end\n", + "\n", + "convert{p,T}(::Type{GF{p,T}}, x::Integer) = GF{p}(x)\n", + "convert{p}(::Type{GF{p}}, x::Integer) = GF{p}(x)\n", + "convert{p,T}(::Type{GF{p,T}}, x::GF{p}) = GF{p,T}(x.data)\n", + "promote_rule{p,T1,T2<:Integer}(::Type{GF{p,T1}}, ::Type{T2}) = GF{p,promote_type(T1,T2)}\n", + "show(io::IO, x::GF) = show(io, x.data);" ] }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 91, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "32×32 Array{BigFloat,2}:\n", - " 5.000000000000000000000000000000000000000000000000000000000000000000000000000000e-01 … 3.030303030303030303030303030303030303030303030303030303030303030303030303030301e-02\n", - " 3.333333333333333333333333333333333333333333333333333333333333333333333333333348e-01 2.941176470588235294117647058823529411764705882352941176470588235294117647058825e-02\n", - " 2.500000000000000000000000000000000000000000000000000000000000000000000000000000e-01 2.857142857142857142857142857142857142857142857142857142857142857142857142857153e-02\n", - " 2.000000000000000000000000000000000000000000000000000000000000000000000000000004e-01 2.777777777777777777777777777777777777777777777777777777777777777777777777777772e-02\n", - " 1.666666666666666666666666666666666666666666666666666666666666666666666666666674e-01 2.702702702702702702702702702702702702702702702702702702702702702702702702702707e-02\n", - " 1.428571428571428571428571428571428571428571428571428571428571428571428571428568e-01 … 2.631578947368421052631578947368421052631578947368421052631578947368421052631566e-02\n", - " 1.250000000000000000000000000000000000000000000000000000000000000000000000000000e-01 2.564102564102564102564102564102564102564102564102564102564102564102564102564099e-02\n", - " 1.111111111111111111111111111111111111111111111111111111111111111111111111111109e-01 2.500000000000000000000000000000000000000000000000000000000000000000000000000005e-02\n", - " 1.000000000000000000000000000000000000000000000000000000000000000000000000000002e-01 2.439024390243902439024390243902439024390243902439024390243902439024390243902438e-02\n", - " 9.090909090909090909090909090909090909090909090909090909090909090909090909090958e-02 2.380952380952380952380952380952380952380952380952380952380952380952380952380947e-02\n", - " 8.333333333333333333333333333333333333333333333333333333333333333333333333333369e-02 … 2.32558139534883720930232558139534883720930232558139534883720930232558139534884e-02 \n", - " 7.692307692307692307692307692307692307692307692307692307692307692307692307692324e-02 2.27272727272727272727272727272727272727272727272727272727272727272727272727274e-02 \n", - " 7.142857142857142857142857142857142857142857142857142857142857142857142857142842e-02 2.222222222222222222222222222222222222222222222222222222222222222222222222222212e-02\n", - " ⋮ ⋱ \n", - " 4.545454545454545454545454545454545454545454545454545454545454545454545454545479e-02 … 1.886792452830188679245283018867924528301886792452830188679245283018867924528301e-02\n", - " 4.34782608695652173913043478260869565217391304347826086956521739130434782608698e-02 1.851851851851851851851851851851851851851851851851851851851851851851851851851839e-02\n", - " 4.166666666666666666666666666666666666666666666666666666666666666666666666666685e-02 1.818181818181818181818181818181818181818181818181818181818181818181818181818181e-02\n", - " 3.999999999999999999999999999999999999999999999999999999999999999999999999999998e-02 1.78571428571428571428571428571428571428571428571428571428571428571428571428571e-02 \n", - " 3.846153846153846153846153846153846153846153846153846153846153846153846153846162e-02 1.754385964912280701754385964912280701754385964912280701754385964912280701754386e-02\n", - " 3.703703703703703703703703703703703703703703703703703703703703703703703703703678e-02 … 1.724137931034482758620689655172413793103448275862068965517241379310344827586212e-02\n", - " 3.571428571428571428571428571428571428571428571428571428571428571428571428571421e-02 1.69491525423728813559322033898305084745762711864406779661016949152542372881356e-02 \n", - " 3.448275862068965517241379310344827586206896551724137931034482758620689655172423e-02 1.666666666666666666666666666666666666666666666666666666666666666666666666666679e-02\n", - " 3.333333333333333333333333333333333333333333333333333333333333333333333333333359e-02 1.63934426229508196721311475409836065573770491803278688524590163934426229508198e-02 \n", - " 3.225806451612903225806451612903225806451612903225806451612903225806451612903224e-02 1.612903225806451612903225806451612903225806451612903225806451612903225806451612e-02\n", - " 3.125000000000000000000000000000000000000000000000000000000000000000000000000000e-02 … 1.587301587301587301587301587301587301587301587301587301587301587301587301587298e-02\n", - " 3.030303030303030303030303030303030303030303030303030303030303030303030303030301e-02 1.562500000000000000000000000000000000000000000000000000000000000000000000000000e-02" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "setprecision(256)\n", - "m = 32\n", - "A = [BigFloat(1//(i+j)) for i=1:m, j=1:m]" + "# Define arithmetic operations on GF(p)\n", + "import Base: +, -, *, /\n", + "\n", + "for op in (:+, :-, :*) # loop over ops, defining eachin terms of integer ops mod p\n", + " @eval begin\n", + " ($op){P,T}(x::GF{P,T}, y::GF{P,T}) = GF{P,T}($(op)(x.data, y.data))\n", + " end\n", + "end" ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 92, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "text/plain": [ - "2.177988536256248982724176502736236250615187593069117314154180618696747880495044e+47" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "x = 2\n", + "y = 6\n", + "x + y = 1\n", + "x - y = 3\n", + "x * y = 5\n" + ] } ], "source": [ - "cond(A)" + "# Create some GF(7) variables and do arithmetic\n", + "\n", + "x = GF{7}(9) # x = 9 mod 7 = 2\n", + "y = GF{7}(6) # y = 6 mod 7 = 6\n", + "@show x\n", + "@show y\n", + "@show x + y # 2 + 6 mod 7 = 1\n", + "@show x - y # 2 - 6 mod 7 = 3\n", + "@show x * y # 2 * 6 mod 7 = 5\n", + ";" ] }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 93, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Define division --this requires more care than +, -, *\n", + "function inv{P,T}(x::GF{P,T})\n", + " if x == zero(x)\n", + " throw(DivideError())\n", + " end\n", + " r, u, v = gcdx(x.data, P)\n", + " GF{P,T}(u)\n", + "end\n", + "(/){P}(x::GF{P}, y::GF{P}) = x*inv(y)\n", + ";" + ] + }, + { + "cell_type": "code", + "execution_count": 94, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x / y = 5\n" + ] + }, { "data": { "text/plain": [ - "32-element Array{BigFloat,1}:\n", - " 1.621285348850195490535789906811725920847712216973467998238033279942275918566829 \n", - " 3.456868707956789891613041213876354179908321698470618951390175507815876021222828e-01\n", - " 5.407277491128296640365093840241177508410407990952070794308942113082198416774143e-02\n", - " 7.247892437505897653348261847192496707722795681674677645117909694725849544137392e-03\n", - " 8.555573260790678206081844535465751651064962858680634979016093310430705471716238e-04\n", - " 8.990644124463385238106739660580748661579502401006405063554353238251690973865212e-05\n", - " 8.469113465736466761723559913788225531943334162106602942912661761678765250832817e-06\n", - " 7.186343031713320548290344408832921755837525301483893305221488793219514957053055e-07\n", - " 5.512102340080481160972555679834760007138668266975981663850422474639906908831211e-08\n", - " 3.831179294893107144564865729031941718145968107442769118914039692971499201649468e-09\n", - " 2.41692077091005439483947787537410516410728195342639860187641526302909391678774e-10 \n", - " 1.385214026514799384333207696454040129243594070315913733101035163198451439121071e-11\n", - " 7.215118537016004343658651831087853830274786574560959044935861349274091695629143e-13\n", - " ⋮ \n", - " 1.084475414530059171569793825492576302941108268798957947501998738178451089727392e-24\n", - " 2.206162923165380848983593074674952199726885833682423442614758268226203928741027e-26\n", - " 3.952235154451152917754719254643876612163749706791893205890362586305795852001964e-28\n", - " 6.178288776503734172142600194054798399618619228741444459105284859195098777222542e-30\n", - " 8.330880951107681333066341256517462134475588481965658260028544542279086008797679e-32\n", - " 9.545983649487228094299175203062478531562335529636120210007530813362894160477128e-34\n", - " 9.112365936796919191953714026018812451744347733140846657333978516806526737483188e-36\n", - " 7.050139826131511918363111980783083147260720623840746437262578311650227537521416e-38\n", - " 4.247022722410804419376555988420890478022770677863336874935021672549500015766746e-40\n", - " 1.86870391683930163643399198381479808406139448685132623537614538376243897610874e-42 \n", - " 5.341661287329951560833334130682459188695568910938902462881072974537162296849237e-45\n", - " 7.44395721952250369439638228866461910238118407741278541665828086597604386031205e-48 " + "5" ] }, - "execution_count": 65, + "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "σ = svdvals(A)" + "@show x / y # 2 ÷ 6 = 5, because 2 = 5*6 mod 7" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Rational numbers" + "## Linear algebra over Galois field" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -822,21 +989,26 @@ { "data": { "text/plain": [ - "41//28" + "4×4 Array{GF{7,Int64},2}:\n", + " 3 5 3 3\n", + " 6 6 2 0\n", + " 2 2 6 4\n", + " 2 6 1 2" ] }, - "execution_count": 24, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "3//4 + 5//7 # denote Rationals with double-divide " + "srand(1234)\n", + "A = [GF{7}(rand(0:6)) for i = 1:4, j = 1:4] # matrix of random GF(7) elems" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -844,42 +1016,25 @@ { "data": { "text/plain": [ - "13176795//4194304" + "4-element Array{GF{7,Int64},1}:\n", + " 1\n", + " 4\n", + " 3\n", + " 0" ] }, - "execution_count": 16, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "Rational(Float32(pi)) # get Rational approximation to π" + "b = [GF{7}(rand(0:6)) for i = 1:4] # random vector b for Ax=b problem" ] }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Float32(13176795 / 4194304) = 3.1415927f0\n", - "Float32(π) = 3.1415927f0\n" - ] - } - ], - "source": [ - "@show Float32(13176795/4194304);\n", - "@show Float32(π);" - ] - }, - { - "cell_type": "code", - "execution_count": 35, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -887,21 +1042,25 @@ { "data": { "text/plain": [ - "5//3 + 7//9*im" + "4-element Array{GF{7,Int64},1}:\n", + " 5\n", + " 5\n", + " 0\n", + " 1" ] }, - "execution_count": 35, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "z = 5//3 + 7//9*im" + "x = A\\b # solve Ax=b" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -909,55 +1068,80 @@ { "data": { "text/plain": [ - "Complex{Rational{Int64}}" + "4-element Array{GF{7,Int64},1}:\n", + " 0\n", + " 0\n", + " 0\n", + " 0" ] }, - "execution_count": 34, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(z)" + "A*x - b # check that x satisfies Ax=b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Whoa! The built-in matrix backslash (LU decomp) works on matrices over user-defined GF(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Solve a system of rational equations" + "### Cost LU of factorization, GF(p) compared to Float64 " ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "text/plain": [ - "5×5 Array{Rational{Int64},2}:\n", - " 1//1 2//5 2//5 9//10 4//5 \n", - " 2//5 1//10 3//10 7//10 4//5 \n", - " 7//10 1//2 1//1 2//5 4//5 \n", - " 1//1 9//10 1//5 3//5 3//5 \n", - " 3//5 9//10 3//10 1//5 1//10" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Float64 LU factorization 0.001055 seconds (8 allocations: 79.266 KiB)\n", + "GF(p) LU factorization 0.004059 seconds (8 allocations: 79.266 KiB)\n" + ] } ], "source": [ - "A = convert(Matrix{Rational{Int64}}, rand(1:10,5,5))/10" + "lufact(A1)\n", + "print(\"Float64 LU factorization \")\n", + "\n", + "@time lufact(A1) # Promoted to Float64 and calls LAPACK LU decomp routine\n", + "\n", + "F = lufact(AF1,Val{false})\n", + "while F.info != 0\n", + " AF1[F.info, F.info] += 1\n", + " F = lufact(AF1, Val{false})\n", + "end\n", + "\n", + "lufact(AF1)\n", + "print(\"GF(p) LU factorization \")\n", + "@time lufact(AF1) # Generic LU decomp algorithm implemented in Julia\n", + ";" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Expr: parsing and evaluating Julia expressions" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 94, "metadata": { "collapsed": false }, @@ -965,27 +1149,21 @@ { "data": { "text/plain": [ - "5-element Array{Rational{Int64},1}:\n", - " 413987//163020\n", - " 21374//40755 \n", - " 1028063//326040\n", - " 301453//54340 \n", - " 58855//10868 " + "\"for n=1:N begin println(n^2) end end\"" ] }, - "execution_count": 40, + "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x = [3//4; 17//3; -1//13; -7//11 ; 3//19]\n", - "b = A*x" + "program = \"for n=1:N begin println(n^2) end end\"\n" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 95, "metadata": { "collapsed": false }, @@ -993,26 +1171,21 @@ { "data": { "text/plain": [ - "5-element Array{Rational{Int64},1}:\n", - " 3//4 \n", - " 17//3 \n", - " -1//13\n", - " -7//11\n", - " 3//19" + "String" ] }, - "execution_count": 41, + "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x̂ = A\\b" + "typeof(program)" ] }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 96, "metadata": { "collapsed": false }, @@ -1020,71 +1193,25 @@ { "data": { "text/plain": [ - "5-element Array{Rational{Int64},1}:\n", - " 0//1\n", - " 0//1\n", - " 0//1\n", - " 0//1\n", - " 0//1" + ":(for n = 1:N # none, line 1:\n", + " begin # none, line 1:\n", + " println(n ^ 2)\n", + " end\n", + " end)" ] }, - "execution_count": 42, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x - x̂" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that Julia's backslash operator (and LU decomp) works over all its numeric types\n", - "\n", - "Float32 and Float64 LU, QR, SVD, etc. are calls to LAPACK" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## User-defined numeric types: scalar finite field GF(p)\n", - "\n", - "an example from Andreas Noack, CSAIL MIT http://andreasnoack.github.io/talks/2015AprilStanford_AndreasNoack.ipynb\n", - "\n", - "### Define type for scalar finite field GF(p) i.e. integers modulo prime p" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Scalar finite fields. P is the prime modulus, T is the integer type\n", - "immutable GF{P,T} <: Number where {P,T<:Integer}\n", - " data::T\n", - " function GF{P,T}(x::Integer) where {P,T<:Integer}\n", - " return new(mod(x, P))\n", - " end\n", - "end\n", - "GF{P}(x::T) where {P,T<:Integer} = GF{P,T}(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " (immutable: In Julia variables change values, but numbers do not.)" + "expression = parse(program)" ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 97, "metadata": { "collapsed": false }, @@ -1092,68 +1219,80 @@ { "data": { "text/plain": [ - "show (generic function with 268 methods)" + "Expr" ] }, - "execution_count": 44, + "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Define some basic methods that all Numbers must have\n", - "import Base: convert, inv, one, promote_rule, show, zero\n", - "\n", - "function call{P}(::Type{GF{P}}, x::Integer)\n", - " if !isprime(P)\n", - " throw(ArgumentError(\"P must be a prime\"))\n", - " end\n", - " return GF{P,typeof(x)}(mod(x, P))\n", - "end\n", - "\n", - "convert{P,T}(::Type{GF{P,T}}, x::Integer) = GF{P}(x)\n", - "convert{P}(::Type{GF{P}}, x::Integer) = GF{P}(x)\n", - "convert{P,T}(::Type{GF{P,T}}, x::GF{P}) = GF{P,T}(x.data)\n", - "promote_rule{P,T1,T2<:Integer}(::Type{GF{P,T1}}, ::Type{T2}) = GF{P,promote_type(T1,T2)}\n", - "show(io::IO, x::GF) = show(io, x.data)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - " ### Define arithmetic operations on GF(p) using metaprogramming" + "typeof(expression)" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 98, "metadata": { - "collapsed": true + "collapsed": false }, - "outputs": [], - "source": [ - "import Base: +, -, *, /\n", - "\n", - "for op in (:+, :-, :*)\n", - " @eval begin\n", - " ($op){P,T}(x::GF{P,T}, y::GF{P,T}) = GF{P,T}($(op)(x.data, y.data))\n", - " end\n", - "end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Expr\n", + " head: Symbol for\n", + " args: Array{Any}((2,))\n", + " 1: Expr\n", + " head: Symbol =\n", + " args: Array{Any}((2,))\n", + " 1: Symbol n\n", + " 2: Expr\n", + " head: Symbol :\n", + " args: Array{Any}((2,))\n", + " 1: Int64 1\n", + " 2: Symbol N\n", + " typ: Any\n", + " typ: Any\n", + " 2: Expr\n", + " head: Symbol block\n", + " args: Array{Any}((2,))\n", + " 1: Expr\n", + " head: Symbol line\n", + " args: Array{Any}((2,))\n", + " 1: Int64 1\n", + " 2: Symbol none\n", + " typ: Any\n", + " 2: Expr\n", + " head: Symbol block\n", + " args: Array{Any}((2,))\n", + " 1: Expr\n", + " head: Symbol line\n", + " args: Array{Any}((2,))\n", + " 1: Int64 1\n", + " 2: Symbol none\n", + " typ: Any\n", + " 2: Expr\n", + " head: Symbol call\n", + " args: Array{Any}((2,))\n", + " 1: Symbol println\n", + " 2: Expr\n", + " typ: Any\n", + " typ: Any\n", + " typ: Any\n", + " typ: Any\n" + ] + } + ], "source": [ - "### Create a couple variables of type GF(5) , do some arithmetic" + "dump(expression)" ] }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 99, "metadata": { "collapsed": false }, @@ -1162,62 +1301,44 @@ "name": "stdout", "output_type": "stream", "text": [ - "x = 4\n", - "y = 2\n", - "x + y = 1\n", - "x - y = 2\n", - "x * y = 3\n" + "program = \"for n=1:N begin println(n^2) end end\"\n", + "expression = :(for n = 1:N # none, line 1:\n", + " begin # none, line 1:\n", + " println(n ^ 2)\n", + " end\n", + " end)\n" ] } ], "source": [ - "x, y = GF{5}(9), GF{5}(2)\n", - "@show x\n", - "@show y\n", - "@show x + y\n", - "@show x - y\n", - "@show x * y\n", - ";" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That's correct because\n", - "\n", - "``\n", - "x == 9 mod 5 == 4\n", - "y == 2 mod 5 == 2\n", - "4 + 2 mod 5 == 1\n", - "4 - 2 mod 5 == 2\n", - "4 * 2 mod 5 == 3\n", - "``" + "@show program\n", + "@show expression;" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 100, "metadata": { - "collapsed": true + "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "4\n", + "9\n" + ] + } + ], "source": [ - "# Division requires slightly more care\n", - "function inv{P,T}(x::GF{P,T})\n", - " if x == zero(x)\n", - " throw(DivideError())\n", - " end\n", - " r, u, v = gcdx(x.data, P)\n", - " GF{P,T}(u)\n", - "end\n", - "(/){P}(x::GF{P}, y::GF{P}) = x*inv(y)\n", - ";" + "N = 3; eval(expression)" ] }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 101, "metadata": { "collapsed": false }, @@ -1226,62 +1347,85 @@ "name": "stdout", "output_type": "stream", "text": [ - "x / y = 2\n", - "x \\ y = 3\n" + "1\n", + "4\n", + "9\n", + "16\n", + "25\n" ] } ], "source": [ - "@show x / y\n", - "@show x \\ y # backslash on any Number is defined in terms of /, so we get it autmomatically\n", - ";" + "N = 5; eval(expression)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Correct: `x = 2y mod 5` and `y = 3x mod 5` for `x=4` and `y=2`" + "## Integers\n", + "\n", + "`Int8, Int16, Int32, Int64, BigInt, UInt8, Uint16, ...`, and `Bool`" ] }, { - "cell_type": "markdown", - "metadata": {}, + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ - "### With field operations defined for GF(p), we can now do linear algebra" + "@show typeof(2) # 64-bit int\n", + "2^62, 2^63 # first is ok, second overflows!" ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "4×4 Array{GF{5,Int64},2}:\n", - " 3 1 1 0\n", - " 1 3 4 3\n", - " 4 3 2 2\n", - " 0 0 1 1" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# create 4x4 matrix of random GF(5) elems\n", - "srand(1234)\n", - "A = [GF{5}(rand(0:4)) for i = 1:4, j = 1:4] " + "n = BigInt(2) # arbitrary-precision int\n", + "@show typeof(n)\n", + "n^62, n^63 # no overflow here..." ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "n^100000 # ...or here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# how many digits is that?\n", + "length(string(ans))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rational numbers\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, "metadata": { "collapsed": false }, @@ -1289,25 +1433,21 @@ { "data": { "text/plain": [ - "4-element Array{GF{5,Int64},1}:\n", - " 4\n", - " 1\n", - " 2\n", - " 0" + "41//28" ] }, - "execution_count": 50, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "b = [GF{5}(rand(0:4)) for i = 1:4]" + "3//4 + 5//7 # denote Rationals with double-divide " ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 65, "metadata": { "collapsed": false }, @@ -1315,32 +1455,42 @@ { "data": { "text/plain": [ - "4-element Array{GF{5,Int64},1}:\n", - " 2\n", - " 3\n", - " 0\n", - " 0" + "13176795//4194304" ] }, - "execution_count": 51, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x̂ = A\\b" + "p = Rational(Float32(π)) # get Rational approximation to π" ] }, { - "cell_type": "markdown", - "metadata": {}, + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Float32(p) = 3.1415927f0\n", + "Float32(π) = 3.1415927f0\n" + ] + } + ], "source": [ - "##### Whoa! The built-in matrix backslash works because the generic Julia LU decomp code works over any field" + "@show Float32(p);\n", + "@show Float32(π);" ] }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 67, "metadata": { "collapsed": false }, @@ -1348,25 +1498,21 @@ { "data": { "text/plain": [ - "4-element Array{GF{5,Int64},1}:\n", - " 0\n", - " 0\n", - " 0\n", - " 0" + "5//3 + 7//9*im" ] }, - "execution_count": 52, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "A*x̂ - b" + "z = 5//3 + 7//9*im" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 68, "metadata": { "collapsed": false }, @@ -1374,381 +1520,140 @@ { "data": { "text/plain": [ - "Array{GF{5,Int64},1}" + "Complex{Rational{Int64}}" ] }, - "execution_count": 53, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(x̂)" + "typeof(z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Run-time introspection of polymorphism\n", + "## Real numbers\n", "\n", - "That is, see what code is being executed for a given operation" + "`Float16, Float32, Float64, BigFloat`, `Complex` for each of those, and `Irrational` types" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "text/html": [ - "181 methods for generic function +:
  • +(x::Bool, z::Complex{Bool}) at complex.jl:232
  • +(x::Bool, y::Bool) at bool.jl:89
  • +(x::Bool) at bool.jl:86
  • +{T<:AbstractFloat}(x::Bool, y::T) at bool.jl:96
  • +(x::Bool, z::Complex) at complex.jl:239
  • +(a::Float16, b::Float16) at float.jl:372
  • +(x::Float32, y::Float32) at float.jl:374
  • +(x::Float64, y::Float64) at float.jl:375
  • +(z::Complex{Bool}, x::Bool) at complex.jl:233
  • +(z::Complex{Bool}, x::Real) at complex.jl:247
  • +(x::Char, y::Integer) at char.jl:40
  • +(c::BigInt, x::BigFloat) at mpfr.jl:312
  • +(a::BigInt, b::BigInt, c::BigInt, d::BigInt, e::BigInt) at gmp.jl:334
  • +(a::BigInt, b::BigInt, c::BigInt, d::BigInt) at gmp.jl:327
  • +(a::BigInt, b::BigInt, c::BigInt) at gmp.jl:321
  • +(x::BigInt, y::BigInt) at gmp.jl:289
  • +(x::BigInt, c::Union{UInt16, UInt32, UInt64, UInt8}) at gmp.jl:346
  • +(x::BigInt, c::Union{Int16, Int32, Int64, Int8}) at gmp.jl:362
  • +(a::BigFloat, b::BigFloat, c::BigFloat, d::BigFloat, e::BigFloat) at mpfr.jl:460
  • +(a::BigFloat, b::BigFloat, c::BigFloat, d::BigFloat) at mpfr.jl:453
  • +(a::BigFloat, b::BigFloat, c::BigFloat) at mpfr.jl:447
  • +(x::BigFloat, c::BigInt) at mpfr.jl:308
  • +(x::BigFloat, y::BigFloat) at mpfr.jl:277
  • +(x::BigFloat, c::Union{UInt16, UInt32, UInt64, UInt8}) at mpfr.jl:284
  • +(x::BigFloat, c::Union{Int16, Int32, Int64, Int8}) at mpfr.jl:292
  • +(x::BigFloat, c::Union{Float16, Float32, Float64}) at mpfr.jl:300
  • +(B::BitArray{2}, J::UniformScaling) at linalg/uniformscaling.jl:59
  • +(a::Base.Pkg.Resolve.VersionWeights.VWPreBuildItem, b::Base.Pkg.Resolve.VersionWeights.VWPreBuildItem) at pkg/resolve/versionweight.jl:87
  • +(a::Base.Pkg.Resolve.VersionWeights.VWPreBuild, b::Base.Pkg.Resolve.VersionWeights.VWPreBuild) at pkg/resolve/versionweight.jl:135
  • +(a::Base.Pkg.Resolve.VersionWeights.VersionWeight, b::Base.Pkg.Resolve.VersionWeights.VersionWeight) at pkg/resolve/versionweight.jl:197
  • +(a::Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue, b::Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue) at pkg/resolve/fieldvalue.jl:44
  • +(x::Base.Dates.CompoundPeriod, y::Base.Dates.CompoundPeriod) at dates/periods.jl:349
  • +(x::Base.Dates.CompoundPeriod, y::Base.Dates.Period) at dates/periods.jl:347
  • +(x::Base.Dates.CompoundPeriod, y::Base.Dates.TimeType) at dates/periods.jl:387
  • +(x::Date, y::Base.Dates.Day) at dates/arithmetic.jl:77
  • +(x::Date, y::Base.Dates.Week) at dates/arithmetic.jl:75
  • +(dt::Date, z::Base.Dates.Month) at dates/arithmetic.jl:58
  • +(dt::Date, y::Base.Dates.Year) at dates/arithmetic.jl:32
  • +(dt::Date, t::Base.Dates.Time) at dates/arithmetic.jl:20
  • +(t::Base.Dates.Time, dt::Date) at dates/arithmetic.jl:24
  • +(x::Base.Dates.Time, y::Base.Dates.TimePeriod) at dates/arithmetic.jl:81
  • +(dt::DateTime, z::Base.Dates.Month) at dates/arithmetic.jl:52
  • +(dt::DateTime, y::Base.Dates.Year) at dates/arithmetic.jl:28
  • +(x::DateTime, y::Base.Dates.Period) at dates/arithmetic.jl:79
  • +(y::AbstractFloat, x::Bool) at bool.jl:98
  • +{T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8}}(x::T, y::T) at int.jl:32
  • +(x::Integer, y::Ptr) at pointer.jl:128
  • +(z::Complex, w::Complex) at complex.jl:221
  • +(z::Complex, x::Bool) at complex.jl:240
  • +(x::Real, z::Complex{Bool}) at complex.jl:246
  • +(x::Real, z::Complex) at complex.jl:258
  • +(z::Complex, x::Real) at complex.jl:259
  • +(x::Rational, y::Rational) at rational.jl:245
  • +(x::Integer, y::Char) at char.jl:41
  • +(i::Integer, index::CartesianIndex) at multidimensional.jl:79
  • +(c::Union{UInt16, UInt32, UInt64, UInt8}, x::BigInt) at gmp.jl:350
  • +(c::Union{Int16, Int32, Int64, Int8}, x::BigInt) at gmp.jl:363
  • +(c::Union{UInt16, UInt32, UInt64, UInt8}, x::BigFloat) at mpfr.jl:288
  • +(c::Union{Int16, Int32, Int64, Int8}, x::BigFloat) at mpfr.jl:296
  • +(c::Union{Float16, Float32, Float64}, x::BigFloat) at mpfr.jl:304
  • +(x::Irrational, y::Irrational) at irrationals.jl:109
  • +(x::Real, r::Base.Use_StepRangeLen_Instead) at deprecated.jl:1223
  • +{P, T}(x::GF{P,T}, y::GF{P,T}) at In[45]:5
  • +(x::Number) at operators.jl:399
  • +{T<:Number}(x::T, y::T) at promotion.jl:335
  • +(x::Number, y::Number) at promotion.jl:249
  • +(x::Real, r::AbstractUnitRange) at range.jl:721
  • +(x::Number, r::AbstractUnitRange) at range.jl:723
  • +(x::Number, r::StepRangeLen) at range.jl:726
  • +(x::Number, r::LinSpace) at range.jl:730
  • +(x::Number, r::Range) at range.jl:724
  • +(r::Range, x::Number) at range.jl:732
  • +(r1::OrdinalRange, r2::OrdinalRange) at range.jl:882
  • +{T}(r1::LinSpace{T}, r2::LinSpace{T}) at range.jl:889
  • +{R<:Base.TwicePrecision, T}(r1::StepRangeLen{T,R,S} where S, r2::StepRangeLen{T,R,S} where S) at twiceprecision.jl:300
  • +{T, S}(r1::StepRangeLen{T,S,S} where S, r2::StepRangeLen{T,S,S} where S) at range.jl:905
  • +(r1::Union{LinSpace, OrdinalRange, StepRangeLen}, r2::Union{LinSpace, OrdinalRange, StepRangeLen}) at range.jl:896
  • +(x::Base.TwicePrecision, y::Number) at twiceprecision.jl:454
  • +(x::Number, y::Base.TwicePrecision) at twiceprecision.jl:457
  • +{T}(x::Base.TwicePrecision{T}, y::Base.TwicePrecision{T}) at twiceprecision.jl:460
  • +(x::Base.TwicePrecision, y::Base.TwicePrecision) at twiceprecision.jl:464
  • +(x::Ptr, y::Integer) at pointer.jl:126
  • +(A::BitArray, B::BitArray) at bitarray.jl:1176
  • +(A::SymTridiagonal, B::SymTridiagonal) at linalg/tridiag.jl:128
  • +(A::Tridiagonal, B::Tridiagonal) at linalg/tridiag.jl:624
  • +(A::UpperTriangular, B::UpperTriangular) at linalg/triangular.jl:374
  • +(A::LowerTriangular, B::LowerTriangular) at linalg/triangular.jl:375
  • +(A::UpperTriangular, B::Base.LinAlg.UnitUpperTriangular) at linalg/triangular.jl:376
  • +(A::LowerTriangular, B::Base.LinAlg.UnitLowerTriangular) at linalg/triangular.jl:377
  • +(A::Base.LinAlg.UnitUpperTriangular, B::UpperTriangular) at linalg/triangular.jl:378
  • +(A::Base.LinAlg.UnitLowerTriangular, B::LowerTriangular) at linalg/triangular.jl:379
  • +(A::Base.LinAlg.UnitUpperTriangular, B::Base.LinAlg.UnitUpperTriangular) at linalg/triangular.jl:380
  • +(A::Base.LinAlg.UnitLowerTriangular, B::Base.LinAlg.UnitLowerTriangular) at linalg/triangular.jl:381
  • +(A::Base.LinAlg.AbstractTriangular, B::Base.LinAlg.AbstractTriangular) at linalg/triangular.jl:382
  • +(A::Symmetric, x::Bool) at linalg/symmetric.jl:272
  • +(A::Symmetric, x::Number) at linalg/symmetric.jl:274
  • +(A::Hermitian, x::Bool) at linalg/symmetric.jl:272
  • +(A::Hermitian, x::Real) at linalg/symmetric.jl:274
  • +(Da::Diagonal, Db::Diagonal) at linalg/diagonal.jl:140
  • +(A::Bidiagonal, B::Bidiagonal) at linalg/bidiag.jl:330
  • +(UL::UpperTriangular, J::UniformScaling) at linalg/uniformscaling.jl:72
  • +(UL::Base.LinAlg.UnitUpperTriangular, J::UniformScaling) at linalg/uniformscaling.jl:75
  • +(UL::LowerTriangular, J::UniformScaling) at linalg/uniformscaling.jl:72
  • +(UL::Base.LinAlg.UnitLowerTriangular, J::UniformScaling) at linalg/uniformscaling.jl:75
  • +(A::Array, B::SparseMatrixCSC) at sparse/sparsematrix.jl:1462
  • +(x::Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T, y::AbstractSparseArray{Tv,Ti,1} where Ti where Tv) at sparse/sparsevector.jl:1333
  • +(x::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) at dates/periods.jl:358
  • +(A::SparseMatrixCSC, J::UniformScaling) at sparse/sparsematrix.jl:3512
  • +{TA, TJ}(A::AbstractArray{TA,2}, J::UniformScaling{TJ}) at linalg/uniformscaling.jl:119
  • +(A::Diagonal, B::Bidiagonal) at linalg/special.jl:113
  • +(A::Bidiagonal, B::Diagonal) at linalg/special.jl:114
  • +(A::Diagonal, B::Tridiagonal) at linalg/special.jl:113
  • +(A::Tridiagonal, B::Diagonal) at linalg/special.jl:114
  • +(A::Diagonal, B::Array{T,2} where T) at linalg/special.jl:113
  • +(A::Array{T,2} where T, B::Diagonal) at linalg/special.jl:114
  • +(A::Bidiagonal, B::Tridiagonal) at linalg/special.jl:113
  • +(A::Tridiagonal, B::Bidiagonal) at linalg/special.jl:114
  • +(A::Bidiagonal, B::Array{T,2} where T) at linalg/special.jl:113
  • +(A::Array{T,2} where T, B::Bidiagonal) at linalg/special.jl:114
  • +(A::Tridiagonal, B::Array{T,2} where T) at linalg/special.jl:113
  • +(A::Array{T,2} where T, B::Tridiagonal) at linalg/special.jl:114
  • +(A::SymTridiagonal, B::Tridiagonal) at linalg/special.jl:122
  • +(A::Tridiagonal, B::SymTridiagonal) at linalg/special.jl:123
  • +(A::SymTridiagonal, B::Array{T,2} where T) at linalg/special.jl:122
  • +(A::Array{T,2} where T, B::SymTridiagonal) at linalg/special.jl:123
  • +(A::Diagonal, B::SymTridiagonal) at linalg/special.jl:131
  • +(A::SymTridiagonal, B::Diagonal) at linalg/special.jl:132
  • +(A::Bidiagonal, B::SymTridiagonal) at linalg/special.jl:131
  • +(A::SymTridiagonal, B::Bidiagonal) at linalg/special.jl:132
  • +(A::Diagonal, B::UpperTriangular) at linalg/special.jl:143
  • +(A::UpperTriangular, B::Diagonal) at linalg/special.jl:144
  • +(A::Diagonal, B::Base.LinAlg.UnitUpperTriangular) at linalg/special.jl:143
  • +(A::Base.LinAlg.UnitUpperTriangular, B::Diagonal) at linalg/special.jl:144
  • +(A::Diagonal, B::LowerTriangular) at linalg/special.jl:143
  • +(A::LowerTriangular, B::Diagonal) at linalg/special.jl:144
  • +(A::Diagonal, B::Base.LinAlg.UnitLowerTriangular) at linalg/special.jl:143
  • +(A::Base.LinAlg.UnitLowerTriangular, B::Diagonal) at linalg/special.jl:144
  • +(A::Base.LinAlg.AbstractTriangular, B::SymTridiagonal) at linalg/special.jl:150
  • +(A::SymTridiagonal, B::Base.LinAlg.AbstractTriangular) at linalg/special.jl:151
  • +(A::Base.LinAlg.AbstractTriangular, B::Tridiagonal) at linalg/special.jl:150
  • +(A::Tridiagonal, B::Base.LinAlg.AbstractTriangular) at linalg/special.jl:151
  • +(A::Base.LinAlg.AbstractTriangular, B::Bidiagonal) at linalg/special.jl:150
  • +(A::Bidiagonal, B::Base.LinAlg.AbstractTriangular) at linalg/special.jl:151
  • +(A::Base.LinAlg.AbstractTriangular, B::Array{T,2} where T) at linalg/special.jl:150
  • +(A::Array{T,2} where T, B::Base.LinAlg.AbstractTriangular) at linalg/special.jl:151
  • +(Y::Union{Base.ReshapedArray{#s266,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s266,N}, SubArray{#s266,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s266<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, x::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) at dates/periods.jl:363
  • +(X::Union{Base.ReshapedArray{#s265,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s265,N}, SubArray{#s265,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s265<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, Y::Union{Base.ReshapedArray{#s264,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s264,N}, SubArray{#s264,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s264<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) at dates/periods.jl:364
  • +(x::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, y::Base.Dates.TimeType) at dates/arithmetic.jl:86
  • +(r::Range{#s267} where #s267<:Base.Dates.TimeType, x::Base.Dates.Period) at dates/ranges.jl:47
  • +(A::SparseMatrixCSC, B::SparseMatrixCSC) at sparse/sparsematrix.jl:1458
  • +(A::SparseMatrixCSC, B::Array) at sparse/sparsematrix.jl:1461
  • +(x::AbstractSparseArray{Tv,Ti,1} where Ti where Tv, y::AbstractSparseArray{Tv,Ti,1} where Ti where Tv) at sparse/sparsevector.jl:1332
  • +(x::AbstractSparseArray{Tv,Ti,1} where Ti where Tv, y::Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) at sparse/sparsevector.jl:1334
  • +(x::AbstractArray{#s45,N} where N where #s45<:Number) at abstractarraymath.jl:93
  • +(A::AbstractArray, B::AbstractArray) at arraymath.jl:37
  • +(A::Number, B::AbstractArray) at arraymath.jl:44
  • +(A::AbstractArray, B::Number) at arraymath.jl:47
  • +{N}(index1::CartesianIndex{N}, index2::CartesianIndex{N}) at multidimensional.jl:70
  • +{N}(index::CartesianIndex{N}, i::Integer) at multidimensional.jl:80
  • +(J1::UniformScaling, J2::UniformScaling) at linalg/uniformscaling.jl:58
  • +(J::UniformScaling, B::BitArray{2}) at linalg/uniformscaling.jl:60
  • +(J::UniformScaling, A::AbstractArray{T,2} where T) at linalg/uniformscaling.jl:61
  • +{T}(a::Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}, b::Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}) at pkg/resolve/versionweight.jl:23
  • +{P<:Base.Dates.Period}(x::P, y::P) at dates/periods.jl:70
  • +(x::Base.Dates.Period, y::Base.Dates.Period) at dates/periods.jl:346
  • +(y::Base.Dates.Period, x::Base.Dates.CompoundPeriod) at dates/periods.jl:348
  • +(x::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) at dates/periods.jl:357
  • +(x::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, Y::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) at dates/periods.jl:362
  • +(x::Base.Dates.TimeType) at dates/arithmetic.jl:8
  • +(a::Base.Dates.TimeType, b::Base.Dates.Period, c::Base.Dates.Period) at dates/periods.jl:378
  • +(a::Base.Dates.TimeType, b::Base.Dates.Period, c::Base.Dates.Period, d::Base.Dates.Period...) at dates/periods.jl:379
  • +(x::Base.Dates.TimeType, y::Base.Dates.CompoundPeriod) at dates/periods.jl:382
  • +(x::Base.Dates.Instant) at dates/arithmetic.jl:4
  • +(y::Base.Dates.Period, x::Base.Dates.TimeType) at dates/arithmetic.jl:83
  • +(x::AbstractArray{#s267,N} where N where #s267<:Base.Dates.TimeType, y::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) at dates/arithmetic.jl:85
  • +(x::Base.Dates.Period, r::Range{#s267} where #s267<:Base.Dates.TimeType) at dates/ranges.jl:46
  • +(y::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, x::AbstractArray{#s267,N} where N where #s267<:Base.Dates.TimeType) at dates/arithmetic.jl:87
  • +(y::Base.Dates.TimeType, x::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) at dates/arithmetic.jl:88
  • +(J::UniformScaling, x::Number) at deprecated.jl:56
  • +(x::Number, J::UniformScaling) at deprecated.jl:56
  • +(a, b, c, xs...) at operators.jl:424
" - ], "text/plain": [ - "# 181 methods for generic function \"+\":\n", - "+(x::Bool, z::Complex{Bool}) in Base at complex.jl:232\n", - "+(x::Bool, y::Bool) in Base at bool.jl:89\n", - "+(x::Bool) in Base at bool.jl:86\n", - "+(x::Bool, y::T) where T<:AbstractFloat in Base at bool.jl:96\n", - "+(x::Bool, z::Complex) in Base at complex.jl:239\n", - "+(a::Float16, b::Float16) in Base at float.jl:372\n", - "+(x::Float32, y::Float32) in Base at float.jl:374\n", - "+(x::Float64, y::Float64) in Base at float.jl:375\n", - "+(z::Complex{Bool}, x::Bool) in Base at complex.jl:233\n", - "+(z::Complex{Bool}, x::Real) in Base at complex.jl:247\n", - "+(x::Char, y::Integer) in Base at char.jl:40\n", - "+(c::BigInt, x::BigFloat) in Base.MPFR at mpfr.jl:312\n", - "+(a::BigInt, b::BigInt, c::BigInt, d::BigInt, e::BigInt) in Base.GMP at gmp.jl:334\n", - "+(a::BigInt, b::BigInt, c::BigInt, d::BigInt) in Base.GMP at gmp.jl:327\n", - "+(a::BigInt, b::BigInt, c::BigInt) in Base.GMP at gmp.jl:321\n", - "+(x::BigInt, y::BigInt) in Base.GMP at gmp.jl:289\n", - "+(x::BigInt, c::Union{UInt16, UInt32, UInt64, UInt8}) in Base.GMP at gmp.jl:346\n", - "+(x::BigInt, c::Union{Int16, Int32, Int64, Int8}) in Base.GMP at gmp.jl:362\n", - "+(a::BigFloat, b::BigFloat, c::BigFloat, d::BigFloat, e::BigFloat) in Base.MPFR at mpfr.jl:460\n", - "+(a::BigFloat, b::BigFloat, c::BigFloat, d::BigFloat) in Base.MPFR at mpfr.jl:453\n", - "+(a::BigFloat, b::BigFloat, c::BigFloat) in Base.MPFR at mpfr.jl:447\n", - "+(x::BigFloat, c::BigInt) in Base.MPFR at mpfr.jl:308\n", - "+(x::BigFloat, y::BigFloat) in Base.MPFR at mpfr.jl:277\n", - "+(x::BigFloat, c::Union{UInt16, UInt32, UInt64, UInt8}) in Base.MPFR at mpfr.jl:284\n", - "+(x::BigFloat, c::Union{Int16, Int32, Int64, Int8}) in Base.MPFR at mpfr.jl:292\n", - "+(x::BigFloat, c::Union{Float16, Float32, Float64}) in Base.MPFR at mpfr.jl:300\n", - "+(B::BitArray{2}, J::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:59\n", - "+(a::Base.Pkg.Resolve.VersionWeights.VWPreBuildItem, b::Base.Pkg.Resolve.VersionWeights.VWPreBuildItem) in Base.Pkg.Resolve.VersionWeights at pkg/resolve/versionweight.jl:87\n", - "+(a::Base.Pkg.Resolve.VersionWeights.VWPreBuild, b::Base.Pkg.Resolve.VersionWeights.VWPreBuild) in Base.Pkg.Resolve.VersionWeights at pkg/resolve/versionweight.jl:135\n", - "+(a::Base.Pkg.Resolve.VersionWeights.VersionWeight, b::Base.Pkg.Resolve.VersionWeights.VersionWeight) in Base.Pkg.Resolve.VersionWeights at pkg/resolve/versionweight.jl:197\n", - "+(a::Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue, b::Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue) in Base.Pkg.Resolve.MaxSum.FieldValues at pkg/resolve/fieldvalue.jl:44\n", - "+(x::Base.Dates.CompoundPeriod, y::Base.Dates.CompoundPeriod) in Base.Dates at dates/periods.jl:349\n", - "+(x::Base.Dates.CompoundPeriod, y::Base.Dates.Period) in Base.Dates at dates/periods.jl:347\n", - "+(x::Base.Dates.CompoundPeriod, y::Base.Dates.TimeType) in Base.Dates at dates/periods.jl:387\n", - "+(x::Date, y::Base.Dates.Day) in Base.Dates at dates/arithmetic.jl:77\n", - "+(x::Date, y::Base.Dates.Week) in Base.Dates at dates/arithmetic.jl:75\n", - "+(dt::Date, z::Base.Dates.Month) in Base.Dates at dates/arithmetic.jl:58\n", - "+(dt::Date, y::Base.Dates.Year) in Base.Dates at dates/arithmetic.jl:32\n", - "+(dt::Date, t::Base.Dates.Time) in Base.Dates at dates/arithmetic.jl:20\n", - "+(t::Base.Dates.Time, dt::Date) in Base.Dates at dates/arithmetic.jl:24\n", - "+(x::Base.Dates.Time, y::Base.Dates.TimePeriod) in Base.Dates at dates/arithmetic.jl:81\n", - "+(dt::DateTime, z::Base.Dates.Month) in Base.Dates at dates/arithmetic.jl:52\n", - "+(dt::DateTime, y::Base.Dates.Year) in Base.Dates at dates/arithmetic.jl:28\n", - "+(x::DateTime, y::Base.Dates.Period) in Base.Dates at dates/arithmetic.jl:79\n", - "+(y::AbstractFloat, x::Bool) in Base at bool.jl:98\n", - "+(x::T, y::T) where T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8} in Base at int.jl:32\n", - "+(x::Integer, y::Ptr) in Base at pointer.jl:128\n", - "+(z::Complex, w::Complex) in Base at complex.jl:221\n", - "+(z::Complex, x::Bool) in Base at complex.jl:240\n", - "+(x::Real, z::Complex{Bool}) in Base at complex.jl:246\n", - "+(x::Real, z::Complex) in Base at complex.jl:258\n", - "+(z::Complex, x::Real) in Base at complex.jl:259\n", - "+(x::Rational, y::Rational) in Base at rational.jl:245\n", - "+(x::Integer, y::Char) in Base at char.jl:41\n", - "+(i::Integer, index::CartesianIndex) in Base.IteratorsMD at multidimensional.jl:79\n", - "+(c::Union{UInt16, UInt32, UInt64, UInt8}, x::BigInt) in Base.GMP at gmp.jl:350\n", - "+(c::Union{Int16, Int32, Int64, Int8}, x::BigInt) in Base.GMP at gmp.jl:363\n", - "+(c::Union{UInt16, UInt32, UInt64, UInt8}, x::BigFloat) in Base.MPFR at mpfr.jl:288\n", - "+(c::Union{Int16, Int32, Int64, Int8}, x::BigFloat) in Base.MPFR at mpfr.jl:296\n", - "+(c::Union{Float16, Float32, Float64}, x::BigFloat) in Base.MPFR at mpfr.jl:304\n", - "+(x::Irrational, y::Irrational) in Base at irrationals.jl:109\n", - "+(x::Real, r::Base.Use_StepRangeLen_Instead) in Base at deprecated.jl:1223\n", - "+(x::GF{P,T}, y::GF{P,T}) where {P, T} in Main at In[45]:5\n", - "+(x::Number) in Base at operators.jl:399\n", - "+(x::T, y::T) where T<:Number in Base at promotion.jl:335\n", - "+(x::Number, y::Number) in Base at promotion.jl:249\n", - "+(x::Real, r::AbstractUnitRange) in Base at range.jl:721\n", - "+(x::Number, r::AbstractUnitRange) in Base at range.jl:723\n", - "+(x::Number, r::StepRangeLen) in Base at range.jl:726\n", - "+(x::Number, r::LinSpace) in Base at range.jl:730\n", - "+(x::Number, r::Range) in Base at range.jl:724\n", - "+(r::Range, x::Number) in Base at range.jl:732\n", - "+(r1::OrdinalRange, r2::OrdinalRange) in Base at range.jl:882\n", - "+(r1::LinSpace{T}, r2::LinSpace{T}) where T in Base at range.jl:889\n", - "+(r1::StepRangeLen{T,R,S} where S, r2::StepRangeLen{T,R,S} where S) where {R<:Base.TwicePrecision, T} in Base at twiceprecision.jl:300\n", - "+(r1::StepRangeLen{T,S,S} where S, r2::StepRangeLen{T,S,S} where S) where {T, S} in Base at range.jl:905\n", - "+(r1::Union{LinSpace, OrdinalRange, StepRangeLen}, r2::Union{LinSpace, OrdinalRange, StepRangeLen}) in Base at range.jl:896\n", - "+(x::Base.TwicePrecision, y::Number) in Base at twiceprecision.jl:454\n", - "+(x::Number, y::Base.TwicePrecision) in Base at twiceprecision.jl:457\n", - "+(x::Base.TwicePrecision{T}, y::Base.TwicePrecision{T}) where T in Base at twiceprecision.jl:460\n", - "+(x::Base.TwicePrecision, y::Base.TwicePrecision) in Base at twiceprecision.jl:464\n", - "+(x::Ptr, y::Integer) in Base at pointer.jl:126\n", - "+(A::BitArray, B::BitArray) in Base at bitarray.jl:1176\n", - "+(A::SymTridiagonal, B::SymTridiagonal) in Base.LinAlg at linalg/tridiag.jl:128\n", - "+(A::Tridiagonal, B::Tridiagonal) in Base.LinAlg at linalg/tridiag.jl:624\n", - "+(A::UpperTriangular, B::UpperTriangular) in Base.LinAlg at linalg/triangular.jl:374\n", - "+(A::LowerTriangular, B::LowerTriangular) in Base.LinAlg at linalg/triangular.jl:375\n", - "+(A::UpperTriangular, B::Base.LinAlg.UnitUpperTriangular) in Base.LinAlg at linalg/triangular.jl:376\n", - "+(A::LowerTriangular, B::Base.LinAlg.UnitLowerTriangular) in Base.LinAlg at linalg/triangular.jl:377\n", - "+(A::Base.LinAlg.UnitUpperTriangular, B::UpperTriangular) in Base.LinAlg at linalg/triangular.jl:378\n", - "+(A::Base.LinAlg.UnitLowerTriangular, B::LowerTriangular) in Base.LinAlg at linalg/triangular.jl:379\n", - "+(A::Base.LinAlg.UnitUpperTriangular, B::Base.LinAlg.UnitUpperTriangular) in Base.LinAlg at linalg/triangular.jl:380\n", - "+(A::Base.LinAlg.UnitLowerTriangular, B::Base.LinAlg.UnitLowerTriangular) in Base.LinAlg at linalg/triangular.jl:381\n", - "+(A::Base.LinAlg.AbstractTriangular, B::Base.LinAlg.AbstractTriangular) in Base.LinAlg at linalg/triangular.jl:382\n", - "+(A::Symmetric, x::Bool) in Base.LinAlg at linalg/symmetric.jl:272\n", - "+(A::Symmetric, x::Number) in Base.LinAlg at linalg/symmetric.jl:274\n", - "+(A::Hermitian, x::Bool) in Base.LinAlg at linalg/symmetric.jl:272\n", - "+(A::Hermitian, x::Real) in Base.LinAlg at linalg/symmetric.jl:274\n", - "+(Da::Diagonal, Db::Diagonal) in Base.LinAlg at linalg/diagonal.jl:140\n", - "+(A::Bidiagonal, B::Bidiagonal) in Base.LinAlg at linalg/bidiag.jl:330\n", - "+(UL::UpperTriangular, J::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:72\n", - "+(UL::Base.LinAlg.UnitUpperTriangular, J::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:75\n", - "+(UL::LowerTriangular, J::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:72\n", - "+(UL::Base.LinAlg.UnitLowerTriangular, J::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:75\n", - "+(A::Array, B::SparseMatrixCSC) in Base.SparseArrays at sparse/sparsematrix.jl:1462\n", - "+(x::Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T, y::AbstractSparseArray{Tv,Ti,1} where Ti where Tv) in Base.SparseArrays at sparse/sparsevector.jl:1333\n", - "+(x::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) in Base.Dates at dates/periods.jl:358\n", - "+(A::SparseMatrixCSC, J::UniformScaling) in Base.SparseArrays at sparse/sparsematrix.jl:3512\n", - "+(A::AbstractArray{TA,2}, J::UniformScaling{TJ}) where {TA, TJ} in Base.LinAlg at linalg/uniformscaling.jl:119\n", - "+(A::Diagonal, B::Bidiagonal) in Base.LinAlg at linalg/special.jl:113\n", - "+(A::Bidiagonal, B::Diagonal) in Base.LinAlg at linalg/special.jl:114\n", - "+(A::Diagonal, B::Tridiagonal) in Base.LinAlg at linalg/special.jl:113\n", - "+(A::Tridiagonal, B::Diagonal) in Base.LinAlg at linalg/special.jl:114\n", - "+(A::Diagonal, B::Array{T,2} where T) in Base.LinAlg at linalg/special.jl:113\n", - "+(A::Array{T,2} where T, B::Diagonal) in Base.LinAlg at linalg/special.jl:114\n", - "+(A::Bidiagonal, B::Tridiagonal) in Base.LinAlg at linalg/special.jl:113\n", - "+(A::Tridiagonal, B::Bidiagonal) in Base.LinAlg at linalg/special.jl:114\n", - "+(A::Bidiagonal, B::Array{T,2} where T) in Base.LinAlg at linalg/special.jl:113\n", - "+(A::Array{T,2} where T, B::Bidiagonal) in Base.LinAlg at linalg/special.jl:114\n", - "+(A::Tridiagonal, B::Array{T,2} where T) in Base.LinAlg at linalg/special.jl:113\n", - "+(A::Array{T,2} where T, B::Tridiagonal) in Base.LinAlg at linalg/special.jl:114\n", - "+(A::SymTridiagonal, B::Tridiagonal) in Base.LinAlg at linalg/special.jl:122\n", - "+(A::Tridiagonal, B::SymTridiagonal) in Base.LinAlg at linalg/special.jl:123\n", - "+(A::SymTridiagonal, B::Array{T,2} where T) in Base.LinAlg at linalg/special.jl:122\n", - "+(A::Array{T,2} where T, B::SymTridiagonal) in Base.LinAlg at linalg/special.jl:123\n", - "+(A::Diagonal, B::SymTridiagonal) in Base.LinAlg at linalg/special.jl:131\n", - "+(A::SymTridiagonal, B::Diagonal) in Base.LinAlg at linalg/special.jl:132\n", - "+(A::Bidiagonal, B::SymTridiagonal) in Base.LinAlg at linalg/special.jl:131\n", - "+(A::SymTridiagonal, B::Bidiagonal) in Base.LinAlg at linalg/special.jl:132\n", - "+(A::Diagonal, B::UpperTriangular) in Base.LinAlg at linalg/special.jl:143\n", - "+(A::UpperTriangular, B::Diagonal) in Base.LinAlg at linalg/special.jl:144\n", - "+(A::Diagonal, B::Base.LinAlg.UnitUpperTriangular) in Base.LinAlg at linalg/special.jl:143\n", - "+(A::Base.LinAlg.UnitUpperTriangular, B::Diagonal) in Base.LinAlg at linalg/special.jl:144\n", - "+(A::Diagonal, B::LowerTriangular) in Base.LinAlg at linalg/special.jl:143\n", - "+(A::LowerTriangular, B::Diagonal) in Base.LinAlg at linalg/special.jl:144\n", - "+(A::Diagonal, B::Base.LinAlg.UnitLowerTriangular) in Base.LinAlg at linalg/special.jl:143\n", - "+(A::Base.LinAlg.UnitLowerTriangular, B::Diagonal) in Base.LinAlg at linalg/special.jl:144\n", - "+(A::Base.LinAlg.AbstractTriangular, B::SymTridiagonal) in Base.LinAlg at linalg/special.jl:150\n", - "+(A::SymTridiagonal, B::Base.LinAlg.AbstractTriangular) in Base.LinAlg at linalg/special.jl:151\n", - "+(A::Base.LinAlg.AbstractTriangular, B::Tridiagonal) in Base.LinAlg at linalg/special.jl:150\n", - "+(A::Tridiagonal, B::Base.LinAlg.AbstractTriangular) in Base.LinAlg at linalg/special.jl:151\n", - "+(A::Base.LinAlg.AbstractTriangular, B::Bidiagonal) in Base.LinAlg at linalg/special.jl:150\n", - "+(A::Bidiagonal, B::Base.LinAlg.AbstractTriangular) in Base.LinAlg at linalg/special.jl:151\n", - "+(A::Base.LinAlg.AbstractTriangular, B::Array{T,2} where T) in Base.LinAlg at linalg/special.jl:150\n", - "+(A::Array{T,2} where T, B::Base.LinAlg.AbstractTriangular) in Base.LinAlg at linalg/special.jl:151\n", - "+(Y::Union{Base.ReshapedArray{#s266,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s266,N}, SubArray{#s266,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s266<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, x::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) in Base.Dates at dates/periods.jl:363\n", - "+(X::Union{Base.ReshapedArray{#s265,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s265,N}, SubArray{#s265,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s265<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, Y::Union{Base.ReshapedArray{#s264,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s264,N}, SubArray{#s264,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s264<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) in Base.Dates at dates/periods.jl:364\n", - "+(x::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, y::Base.Dates.TimeType) in Base.Dates at dates/arithmetic.jl:86\n", - "+(r::Range{#s267} where #s267<:Base.Dates.TimeType, x::Base.Dates.Period) in Base.Dates at dates/ranges.jl:47\n", - "+(A::SparseMatrixCSC, B::SparseMatrixCSC) in Base.SparseArrays at sparse/sparsematrix.jl:1458\n", - "+(A::SparseMatrixCSC, B::Array) in Base.SparseArrays at sparse/sparsematrix.jl:1461\n", - "+(x::AbstractSparseArray{Tv,Ti,1} where Ti where Tv, y::AbstractSparseArray{Tv,Ti,1} where Ti where Tv) in Base.SparseArrays at sparse/sparsevector.jl:1332\n", - "+(x::AbstractSparseArray{Tv,Ti,1} where Ti where Tv, y::Union{Base.ReshapedArray{T,1,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{T,1}, SubArray{T,1,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where T) in Base.SparseArrays at sparse/sparsevector.jl:1334\n", - "+(x::AbstractArray{#s45,N} where N where #s45<:Number) in Base at abstractarraymath.jl:93\n", - "+(A::AbstractArray, B::AbstractArray) in Base at arraymath.jl:37\n", - "+(A::Number, B::AbstractArray) in Base at arraymath.jl:44\n", - "+(A::AbstractArray, B::Number) in Base at arraymath.jl:47\n", - "+(index1::CartesianIndex{N}, index2::CartesianIndex{N}) where N in Base.IteratorsMD at multidimensional.jl:70\n", - "+(index::CartesianIndex{N}, i::Integer) where N in Base.IteratorsMD at multidimensional.jl:80\n", - "+(J1::UniformScaling, J2::UniformScaling) in Base.LinAlg at linalg/uniformscaling.jl:58\n", - "+(J::UniformScaling, B::BitArray{2}) in Base.LinAlg at linalg/uniformscaling.jl:60\n", - "+(J::UniformScaling, A::AbstractArray{T,2} where T) in Base.LinAlg at linalg/uniformscaling.jl:61\n", - "+(a::Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}, b::Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}) where T in Base.Pkg.Resolve.VersionWeights at pkg/resolve/versionweight.jl:23\n", - "+(x::P, y::P) where P<:Base.Dates.Period in Base.Dates at dates/periods.jl:70\n", - "+(x::Base.Dates.Period, y::Base.Dates.Period) in Base.Dates at dates/periods.jl:346\n", - "+(y::Base.Dates.Period, x::Base.Dates.CompoundPeriod) in Base.Dates at dates/periods.jl:348\n", - "+(x::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) in Base.Dates at dates/periods.jl:357\n", - "+(x::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, Y::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) in Base.Dates at dates/periods.jl:362\n", - "+(x::Base.Dates.TimeType) in Base.Dates at dates/arithmetic.jl:8\n", - "+(a::Base.Dates.TimeType, b::Base.Dates.Period, c::Base.Dates.Period) in Base.Dates at dates/periods.jl:378\n", - "+(a::Base.Dates.TimeType, b::Base.Dates.Period, c::Base.Dates.Period, d::Base.Dates.Period...) in Base.Dates at dates/periods.jl:379\n", - "+(x::Base.Dates.TimeType, y::Base.Dates.CompoundPeriod) in Base.Dates at dates/periods.jl:382\n", - "+(x::Base.Dates.Instant) in Base.Dates at dates/arithmetic.jl:4\n", - "+(y::Base.Dates.Period, x::Base.Dates.TimeType) in Base.Dates at dates/arithmetic.jl:83\n", - "+(x::AbstractArray{#s267,N} where N where #s267<:Base.Dates.TimeType, y::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) in Base.Dates at dates/arithmetic.jl:85\n", - "+(x::Base.Dates.Period, r::Range{#s267} where #s267<:Base.Dates.TimeType) in Base.Dates at dates/ranges.jl:46\n", - "+(y::Union{Base.Dates.CompoundPeriod, Base.Dates.Period}, x::AbstractArray{#s267,N} where N where #s267<:Base.Dates.TimeType) in Base.Dates at dates/arithmetic.jl:87\n", - "+(y::Base.Dates.TimeType, x::Union{Base.ReshapedArray{#s267,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray, DenseArray{#s267,N}, SubArray{#s267,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:DenseArray where N where T, DenseArray} where N where #s267<:Union{Base.Dates.CompoundPeriod, Base.Dates.Period}) in Base.Dates at dates/arithmetic.jl:88\n", - "+(J::UniformScaling, x::Number) in Base at deprecated.jl:56\n", - "+(x::Number, J::UniformScaling) in Base at deprecated.jl:56\n", - "+(a, b, c, xs...) in Base at operators.jl:424" + "1.5" ] }, - "execution_count": 54, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "methods(+)" + "x = 3/2 # Int/Int produces Float. Use div(m,n) or m ÷ n for integer division." ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "text/html": [ - "+{P, T}(x::GF{P,T}, y::GF{P,T}) at In[45]:5" - ], "text/plain": [ - "+(x::GF{P,T}, y::GF{P,T}) where {P, T} in Main at In[45]:5" + "Float64" ] }, - "execution_count": 55, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "@which x + y" + "typeof(x) # default floating-point is Float64 (same as C's double precision)" ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "text/html": [ - "+{T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8}}(x::T, y::T) at int.jl:32" - ], "text/plain": [ - "+(x::T, y::T) where T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8} in Base at int.jl:32" + "π = 3.1415926535897..." ] }, - "execution_count": 56, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "@which 4+8" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Compare computational costs of GF(p) to Float64 \n", - "\n", - "Cost of matrix-matrix multiplication" + "π" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Int64 matrix multiply 0.001520 seconds (12 allocations: 78.688 KiB)\n", - "GF(p) matrix multiply 0.007551 seconds (12 allocations: 78.688 KiB)\n" - ] + "data": { + "text/plain": [ + "Irrational{:π}" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "A1, A2 = rand(1:100, 100, 100), rand(1:100, 100, 100)\n", - "A1*A2 # warm up to be sure function is compiled\n", - "print(\"Int64 matrix multiply \")\n", - "@time A1*A2\n", - "\n", - "AF1, AF2 = map(GF{5}, A1), map(GF{5}, A2)\n", - "AF1*AF2\n", - "print(\"GF(p) matrix multiply \")\n", - "@time AF1*AF2\n", - ";" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Cost of LU factorization: Float64 via LAPACK, GF(p) via generic LU algorithm" + "typeof(π)" ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Float64 LU factorization 0.001502 seconds (8 allocations: 79.266 KiB)\n", - "GF(p) LU factorization 0.003863 seconds (8 allocations: 79.266 KiB)\n" - ] + "data": { + "text/plain": [ + "3.141592653589793" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "lufact(A1)\n", - "print(\"Float64 LU factorization \")\n", - "\n", - "@time lufact(A1) # Promoted to Float64 and calls LAPACK\n", - "\n", - "F = lufact(AF1,Val{false})\n", - "while F.info != 0\n", - " AF1[F.info, F.info] += 1\n", - " F = lufact(AF1, Val{false})\n", - "end\n", - "\n", - "lufact(AF1)\n", - "print(\"GF(p) LU factorization \")\n", - "@time lufact(AF1) # Non-blocked generic LU implemented in Julia\n", - ";" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### According to Noack, the increased cost of GF(p) over floats is just the modulus operations " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Some built-in general-purpose types\n", - "\n", - "### Array" + "Float64(π)" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -1756,40 +1661,21 @@ { "data": { "text/plain": [ - "3×2×4 Array{Bool,3}:\n", - "[:, :, 1] =\n", - " false true\n", - " false true\n", - " false false\n", - "\n", - "[:, :, 2] =\n", - " false true\n", - " false true\n", - " false false\n", - "\n", - "[:, :, 3] =\n", - " true false\n", - " false false\n", - " false false\n", - "\n", - "[:, :, 4] =\n", - " false false\n", - " false false\n", - " true false" + "-1.0 + 1.2246467991473532e-16im" ] }, - "execution_count": 27, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x = Array{Bool}(3,2,4)" + "exp(π*im)" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -1797,30 +1683,21 @@ { "data": { "text/plain": [ - "2-element Array{Bool,1}:\n", - " true\n", - " false" + "Complex{Float64}" ] }, - "execution_count": 28, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x[1,:,3]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Tuple" + "typeof(ans)" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 53, "metadata": { "collapsed": false }, @@ -1828,21 +1705,21 @@ { "data": { "text/plain": [ - "(5.6, π = 3.1415926535897..., \"foo\", true, Rational{Int32}[0//1, 0//1, 0//1, 0//1])" + "3.141592653589793238462643383279502884197169399375105820974944592307816406286198" ] }, - "execution_count": 29, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x = (5.6, π, \"foo\", true, zeros(Rational{Int32},4))" + "pi = BigFloat(π)" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 54, "metadata": { "collapsed": false }, @@ -1850,21 +1727,21 @@ { "data": { "text/plain": [ - "Tuple{Float64,Irrational{:π},String,Bool,Array{Rational{Int32},1}}" + "-1.000000000000000000000000000000000000000000000000000000000000000000000000000000 + 1.096917440979352076742130626395698021050758236508687951179005716992142688513354e-77im" ] }, - "execution_count": 30, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(x)" + "exp(pi*im)" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 55, "metadata": { "collapsed": false }, @@ -1872,28 +1749,21 @@ { "data": { "text/plain": [ - "\"foo\"" + "Complex{BigFloat}" ] }, - "execution_count": 31, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "x[3]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Dict" + "typeof(ans)" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 56, "metadata": { "collapsed": false }, @@ -1901,24 +1771,21 @@ { "data": { "text/plain": [ - "Dict{String,Any} with 3 entries:\n", - " \"bar\" => false\n", - " \"baz\" => 6.7\n", - " \"foo\" => 1" + "1.727233711018888925077270372560079914223200072887256277004740694033718360632485e-77" ] }, - "execution_count": 33, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "d = Dict(\"foo\" => 1, \"bar\" => false, \"baz\" => 6.7)" + "eps(BigFloat)" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 57, "metadata": { "collapsed": false }, @@ -1926,28 +1793,21 @@ { "data": { "text/plain": [ - "6.7" + "1024" ] }, - "execution_count": 34, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "d[\"baz\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Expr" + "setprecision(1024)" ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 58, "metadata": { "collapsed": false }, @@ -1955,21 +1815,21 @@ { "data": { "text/plain": [ - "\"for n=1:N begin println(n^2) end end\"" + "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724586997" ] }, - "execution_count": 50, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "program = \"for n=1:N begin println(n^2) end end\"\n" + "pi = BigFloat(π)" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 59, "metadata": { "collapsed": false }, @@ -1977,21 +1837,21 @@ { "data": { "text/plain": [ - "String" + "1.112536929253600691545116358666202032109607990231165915276663708443602217406959097927141579506255510282033669865517905502576217080776730054428006192688859410565388996766001165239805073721291818035960782523471251867104187625403325308329079474360245589984295819824250317954385059152437399890443876874974725790226e-308" ] }, - "execution_count": 51, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(program)" + "eps(BigFloat)" ] }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 60, "metadata": { "collapsed": false }, @@ -1999,25 +1859,21 @@ { "data": { "text/plain": [ - ":(for n = 1:N # none, line 1:\n", - " begin # none, line 1:\n", - " println(n ^ 2)\n", - " end\n", - " end)" + "2.7 + 5.3im" ] }, - "execution_count": 52, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "expression = parse(program)" + "z = 2.7 + 5.3im" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 61, "metadata": { "collapsed": false }, @@ -2025,119 +1881,160 @@ { "data": { "text/plain": [ - "Expr" + "Complex{Float64}" ] }, - "execution_count": 53, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "typeof(expression)" + "typeof(z)" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Expr\n", - " head: Symbol for\n", - " args: Array{Any}((2,))\n", - " 1: Expr\n", - " head: Symbol =\n", - " args: Array{Any}((2,))\n", - " 1: Symbol n\n", - " 2: Expr\n", - " head: Symbol :\n", - " args: Array{Any}((2,))\n", - " 1: Int64 1\n", - " 2: Symbol N\n", - " typ: Any\n", - " typ: Any\n", - " 2: Expr\n", - " head: Symbol block\n", - " args: Array{Any}((2,))\n", - " 1: Expr\n", - " head: Symbol line\n", - " args: Array{Any}((2,))\n", - " 1: Int64 1\n", - " 2: Symbol none\n", - " typ: Any\n", - " 2: Expr\n", - " head: Symbol block\n", - " args: Array{Any}((2,))\n", - " 1: Expr\n", - " head: Symbol line\n", - " args: Array{Any}((2,))\n", - " 1: Int64 1\n", - " 2: Symbol none\n", - " typ: Any\n", - " 2: Expr\n", - " head: Symbol call\n", - " args: Array{Any}((2,))\n", - " 1: Symbol println\n", - " 2: Expr\n", - " typ: Any\n", - " typ: Any\n", - " typ: Any\n", - " typ: Any\n" - ] + "data": { + "text/plain": [ + "2.700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 + 5.300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018im" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "dump(expression)" + "z = BigFloat(\"2.7\") + BigFloat(\"5.3\")im" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 63, "metadata": { "collapsed": false }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "4\n", - "9\n" - ] + "data": { + "text/plain": [ + "Complex{BigFloat}" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "N = 3; eval(expression)" + "typeof(z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Some built-in general-purpose types\n", + "\n", + "### Array" ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "4\n", - "9\n", - "16\n", - "25\n" - ] - } - ], + "outputs": [], "source": [ - "N = 5; eval(expression)" + "x = Array{Bool}(3,2,4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x[1,:,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tuple" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x = (5.6, π, \"foo\", true, zeros(Rational{Int32},4))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "typeof(x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x[3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "d = Dict(\"foo\" => 1, \"bar\" => false, \"baz\" => 6.7)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "d[\"baz\"]" ] }, { @@ -2149,238 +2046,156 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "2-element Array{Union{DataType, UnionAll},1}:\n", - " Complex\n", - " Real " - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "subtypes(Number)" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "4-element Array{Union{DataType, UnionAll},1}:\n", - " AbstractFloat\n", - " Integer \n", - " Irrational \n", - " Rational " - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "subtypes(Real)" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "4-element Array{Union{DataType, UnionAll},1}:\n", - " BigFloat\n", - " Float16 \n", - " Float32 \n", - " Float64 " - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "subtypes(AbstractFloat)" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false, "scrolled": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "4-element Array{Union{DataType, UnionAll},1}:\n", - " BigInt \n", - " Bool \n", - " Signed \n", - " Unsigned" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "subtypes(Integer)" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "Integer" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "supertype(Bool)" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "true" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "Int32 <: Number # is Int32 a subtype of Number?" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "true" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "Int64 <: Real # is Int64 a subtype of the reals?" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "false" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "Int64 <: Float64 # is Int64 a subtype of Float64?" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "false" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "8 ∈ 0:3:15 # is 8 an element of {0,3,6,9,12,15}? (a set operation)" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "Bool" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "typeof(ans)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run-time introspection of polymorphism\n", + "\n", + "That is, see what code is being executed for a given operation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "methods(+)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "@which x + y" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "@which 4+8" + ] } ], "metadata": { diff --git a/6-conclusions.ipynb b/6-conclusions.ipynb index 3d228c0..1c04922 100644 --- a/6-conclusions.ipynb +++ b/6-conclusions.ipynb @@ -6,32 +6,30 @@ "source": [ "# Conclusions\n", "\n", - "### Julia \n", - " * well-designed open-source scientific programming language \n", - " * great numeric types, libraries\n", - " * great general-purpose types, libraries\n", - " * modern, dynamic, flexible\n", - " * roughly as fast as compiled C\n", - " * easy learning curve\n", - " * dynamism and metaprogramming make new things possible\n", - " * **solves the two-language problem:** from tinkering to HPC\n", + " \n", + "### *Julia solves the two-language problem*\n", + " * from interactive exploration to high-performance computing\n", + " \n", + "### *Julia opens new doors*\n", + " * exact and high-precision calculations \n", + " * higher-level abstraction of parallelism \n", + " * numerics and general-purpose computing\n", + " * scientific computing and computer science\n", + " \n", + "### *Openness fosters innovation* \n", "\n", - "\n", - "### Didn't cover\n", - " * [parallel computing](http://docs.julialang.org/en/release-0.5/manual/parallel-computing/)\n", - " * [general-purpose libraries:](http://docs.julialang.org/en/release-0.5/#stdlib) Strings, Sets, Arrays, Tuples, Dicts, Time, Streams, Network, Tasks,...\n", - " * [documentation](http://docs.julialang.org/en/release-0.5/)\n", - " * [installation](http://julialang.org/downloads/)\n", - " * required libraries: LLVM, OpenBLAS, LAPACK, ARPACK, FFTW, GNU arb-size int & float, ...\n", - " * [calling C and Fortran](http://docs.julialang.org/en/stable/manual/calling-c-and-fortran-code/)\n", + "#### Didn't cover\n", + " * [installation](http://julialang.org/downloads/), [documentation](http://docs.julialang.org/en/stable/) \n", + " * [Juno](http://junolab.org/) integrated development environment, [Gallium](https://github.com/Keno/Gallium.jl) debugger.\n", + " * [parallel computing](http://docs.julialang.org/en/stable/manual/parallel-computing/)\n", + " * [interoperability](http://docs.julialang.org/en/stable/manual/calling-c-and-fortran-code/) with other languages\n", " * [modules](ocs.julialang.org/en/stable/manual/modules/) and [package manager](http://docs.julialang.org/en/stable/manual/packages/)\n", - " * [documentation](http://docs.julialang.org/en/stable/)\n", - " * [code hosting on git](https://github.com/JuliaLang/juliasource)\n", - " * running Julia on [JuliaBox](https://juliabox.com/) or from command-line\n", - " \n", - "### Acknowledgements\n", + " * Julia community: [language development](https://github.com/JuliaLang/juliasource), [discussion forum](https://discourse.julialang.org)\n", + " * running Julia on [JuliaBox](https://juliabox.com/)\n", + "\n", + "#### Acknowledgements\n", " * [David Sanders](http://sistemas.fciencias.unam.mx/~dsanders/), Physics, Universidad Nacional Autónoma de México \n", - " * [Andreas Noack](http://andreasnoack.github.io/academiccv.html), CS and AI Lab, MIT\n", + " * [Andreas Noack](http://andreasnoack.github.io/academiccv.html), Julia Computing\n", " * The Julia team\n", " * NSF grant #1554149" ] @@ -48,9 +46,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 0.5.0", + "display_name": "Julia 0.6.0", "language": "julia", - "name": "julia-0.5" + "name": "julia-0.6" }, "language_info": { "file_extension": ".jl", diff --git a/ks-benchmark/cputime.asc b/ks-codes/cputime.asc similarity index 100% rename from ks-benchmark/cputime.asc rename to ks-codes/cputime.asc diff --git a/ks-benchmark/ks-r2c.f90 b/ks-codes/ks-r2c.f90 similarity index 100% rename from ks-benchmark/ks-r2c.f90 rename to ks-codes/ks-r2c.f90 diff --git a/ks-benchmark/ks.mod b/ks-codes/ks.mod similarity index 100% rename from ks-benchmark/ks.mod rename to ks-codes/ks.mod diff --git a/ks-benchmark/ksbenchmark.c b/ks-codes/ksbenchmark.c similarity index 100% rename from ks-benchmark/ksbenchmark.c rename to ks-codes/ksbenchmark.c diff --git a/ks-benchmark/ksbenchmark.cpp b/ks-codes/ksbenchmark.cpp similarity index 100% rename from ks-benchmark/ksbenchmark.cpp rename to ks-codes/ksbenchmark.cpp diff --git a/ks-benchmark/ksbenchmark.f90 b/ks-codes/ksbenchmark.f90 similarity index 100% rename from ks-benchmark/ksbenchmark.f90 rename to ks-codes/ksbenchmark.f90 diff --git a/ks-benchmark/ksbenchmark.jl b/ks-codes/ksbenchmark.jl similarity index 100% rename from ks-benchmark/ksbenchmark.jl rename to ks-codes/ksbenchmark.jl diff --git a/ks-benchmark/ksbenchmark.m b/ks-codes/ksbenchmark.m similarity index 100% rename from ks-benchmark/ksbenchmark.m rename to ks-codes/ksbenchmark.m diff --git a/ks-benchmark/ksbenchmark.py b/ks-codes/ksbenchmark.py similarity index 100% rename from ks-benchmark/ksbenchmark.py rename to ks-codes/ksbenchmark.py diff --git a/ks-benchmark/ksintegrate.cpp b/ks-codes/ksintegrate.cpp similarity index 100% rename from ks-benchmark/ksintegrate.cpp rename to ks-codes/ksintegrate.cpp diff --git a/ks-benchmark/ksintegrate.f90 b/ks-codes/ksintegrate.f90 similarity index 100% rename from ks-benchmark/ksintegrate.f90 rename to ks-codes/ksintegrate.f90 diff --git a/ks-benchmark/ksintegrate.m b/ks-codes/ksintegrate.m similarity index 100% rename from ks-benchmark/ksintegrate.m rename to ks-codes/ksintegrate.m diff --git a/ks-benchmark/ksintegrate.py b/ks-codes/ksintegrate.py similarity index 100% rename from ks-benchmark/ksintegrate.py rename to ks-codes/ksintegrate.py diff --git a/ks-benchmark/ksintegrateInplace.jl b/ks-codes/ksintegrateInplace.jl similarity index 100% rename from ks-benchmark/ksintegrateInplace.jl rename to ks-codes/ksintegrateInplace.jl diff --git a/ks-benchmark/ksintegrateNaive.jl b/ks-codes/ksintegrateNaive.jl similarity index 100% rename from ks-benchmark/ksintegrateNaive.jl rename to ks-codes/ksintegrateNaive.jl diff --git a/ks-benchmark/ksintegrateUnrolled.jl b/ks-codes/ksintegrateUnrolled.jl similarity index 100% rename from ks-benchmark/ksintegrateUnrolled.jl rename to ks-codes/ksintegrateUnrolled.jl diff --git a/ks-benchmark/linecount.asc b/ks-codes/linecount.asc similarity index 100% rename from ks-benchmark/linecount.asc rename to ks-codes/linecount.asc diff --git a/ks-benchmark/stripped/ksstripped.cpp b/ks-codes/stripped/ksstripped.cpp similarity index 100% rename from ks-benchmark/stripped/ksstripped.cpp rename to ks-codes/stripped/ksstripped.cpp diff --git a/ks-benchmark/stripped/ksstripped.f90 b/ks-codes/stripped/ksstripped.f90 similarity index 100% rename from ks-benchmark/stripped/ksstripped.f90 rename to ks-codes/stripped/ksstripped.f90 diff --git a/ks-benchmark/stripped/ksstripped.m b/ks-codes/stripped/ksstripped.m similarity index 100% rename from ks-benchmark/stripped/ksstripped.m rename to ks-codes/stripped/ksstripped.m diff --git a/ks-benchmark/stripped/ksstripped.py b/ks-codes/stripped/ksstripped.py similarity index 100% rename from ks-benchmark/stripped/ksstripped.py rename to ks-codes/stripped/ksstripped.py diff --git a/ks-benchmark/stripped/ksstrippedInplace.jl b/ks-codes/stripped/ksstrippedInplace.jl similarity index 100% rename from ks-benchmark/stripped/ksstrippedInplace.jl rename to ks-codes/stripped/ksstrippedInplace.jl diff --git a/ks-benchmark/stripped/ksstrippedNaive.jl b/ks-codes/stripped/ksstrippedNaive.jl similarity index 100% rename from ks-benchmark/stripped/ksstrippedNaive.jl rename to ks-codes/stripped/ksstrippedNaive.jl diff --git a/ks-benchmark/stripped/ksstrippedUnrolled.jl b/ks-codes/stripped/ksstrippedUnrolled.jl similarity index 100% rename from ks-benchmark/stripped/ksstrippedUnrolled.jl rename to ks-codes/stripped/ksstrippedUnrolled.jl