Skip to content

Instantly share code, notes, and snippets.

@ggggggggg
Last active August 29, 2015 14:08
Show Gist options
  • Save ggggggggg/9fa0200495cddba44cb8 to your computer and use it in GitHub Desktop.
Save ggggggggg/9fa0200495cddba44cb8 to your computer and use it in GitHub Desktop.
IJulia Notebook Demo
{
"metadata": {
"language": "Julia",
"name": "",
"signature": "sha256:7747d1f82629502d590ed8b134a51a0d231faf6a793701636386fffce40ce0d7"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"IJulia combines iPython notebook + Julia."
]
},
{
"cell_type": "heading",
"level": 6,
"metadata": {},
"source": [
"Or Julia doesn't exist in a vaccum, how to leverage the work of the rest of the open source scientific computing community."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Simple things work, displaying results in the same document as code and formatted text."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"1 + sin(3)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"1.1411200080598671"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is also a powerful generalized way of displaying julia objects with rich multimedia."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"using PyPlot\n",
"x = linspace(0,2*pi,1000)\n",
"y = sin(0.7*pi*cos(2*x))\n",
"plot(x, y, color=\"red\", linewidth=2.0, linestyle=\"-\")\n",
"ylabel(\"the y axis\")\n",
"xlabel(\"the x axis\")\n",
"title(\"a sinusoidally-modulated sinusoid\\na bit like the SQUID amplifiers I barely mentioned earlier\")\n",
"#warning my computer is a bit slow so this may take a while"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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Woq+ffuipKQEd999N8LCwvDUU0/B4/Hg66+/RnJysql/FyIiIiKSxxHhOCQkBC6XCx6Pp+5PQBwjXatZPDFixAhs3ry53mMAcPjwYUyfPh3r16+H2+3GiBEjsHDhQpx++umm/j2IiIiISC5HhGMiIiIiIj0E9SEgRERERERaDMc+qKysxMyZM9G2bVtER0dj0KBB+OSTT2RXyzFOnjyJuXPnYvTo0UhKSkJISAhee+012dVyjK+++gq33norevbsidjYWHTs2BFXXnklfvrpJ9lVc4zvv/8eEydOrNvpJjk5GUOGDMHKlStlV82xHnnkkbqdhyhwGzduREhISKMfW7dulV09x9ixYwfGjh2L5ORkxMTEoHfv3njWyacsmuj6669v8j0cEhLS6Pa9DQXVbhWBuv766/Hmm29i+vTp6NatGzIzM3HxxRdjw4YNfq2GpPry8vIwb948dOzYEX369MHGjRvh4ultupk/fz6+/PJLTJw4EWeddRZycnLwr3/9C/369cP//vc/9OzZU3YVbS87OxulpaW4/vrr0bZtW5SVlSErKwtTpkzBwYMHMWfOHNlVdJRDhw7h0UcfRUxMDNsKnd1+++0YMGBAvce6dOkiqTbOsn79eowZMwb9+/fH/fffj9jYWOzbtw+HDx+WXTVHuOWWW/DHP/6x3mNutxu33HILOnfujIyMjBafg3OOvbR161YMGjQITzzxBO68804AYiS5V69eSEtLw+effy65hvZXVVWF4uJipKWlYfv27RgwYABeffVVU/e+drIvv/wSAwYMQFiYek28b98+9O7dGxMmTMDy5csl1s653G43+vfvj8LCQvzyyy+yq+MoV111FQoKClBTU4P8/Hx8++23sqtkexs3bsTIkSORlZWFyy+/XHZ1HOfEiRPo3r07hg4diqysLNnVCRr//e9/MWzYMDz66KOYNWtWi9/PaRVeysrKQlhYGKZOnVr3WEREBG688UZ8+eWXvOLTQatWrZCWlgYA4DWb/gYPHlwvGANA165dceaZZ2LPnj2SauV8ISEhaN++PcLDw2VXxVE2b96MN998E08//XTdTkWkH4/Hg5KSEtTU1MiuiqOsWrUKx44dwyOPPAJATCfUbi9Lxli1ahVcLhf+9Kc/efX9DMde2rlzJ7p3747Y2Nh6jyu3nb7++msZ1SIKiMfjQW5uLlJSUmRXxVHKysqQn5+P/fv3Y+HChfj4448xY8YM2dVyjNraWtx222246aabOB3IIDfccAMSEhIQFRWFkSNHYvv27bKr5AiffPIJ4uPj8euvv+KMM85AXFwcEhIS8Le//Q2VlZWyq+dI1dXVeP3113HeeeehQ4cOXv0M5xx7KScnp9F5KspjR44cMbtKRAFbuXIljhw5UneQDunjzjvvxJIlSwAAYWFhWLRoUb27ThSYF154AdnZ2fj0009lV8VxIiIiMGHCBFx88cVISUnB999/jyeeeAK///3v8cUXX6BPnz6yq2hrP/30E2pqajB+/Hj85S9/wfz587FhwwY8++yzKC4uxqpVq2RX0XE+/vhjFBYW+nSyMcOxl8rLyxEREXHK45GRkXVfJ7KTPXv24O9//zuGDBmC6667TnZ1HGX69OmYNGkSjhw5gpUrV+LWW29FVFQU/511UFBQgPvvvx/3338/TzA1wODBgzF48OC6zy+99FJMmDABZ511FmbPno0PP/xQYu3sr7S0FGVlZfjrX/+Kp59+GgAwfvx4VFVV4cUXX8RDDz2Erl27Sq6ls6xatQqtWrXCpEmTvP4ZTqvwUlRUVKO3PCoqKuq+TmQXR48exSWXXILWrVsjKyuL8zV1dsYZZ2DkyJG45ppr8OGHH+L888/HHXfcwYtoHfzjH/9ASkoKbrvtNtlVCRpdunTBuHHjsGHDBq4HCZCSFSZPnlzvceXz//3vf6bXyclKS0vxzjvvYNSoUWjdurXXP8dw7KWMjIxGp04o++W1bdvW7CoR+eX48eO46KKLcOLECXz00UdIT0+XXSXHu+KKK3D8+HH8+OOPsqtiaz/99BOWLl2K2267DYcOHcLBgwdx8OBBVFRUoKqqCr/88guKiopkV9OR2rdvj6qqKpw8eVJ2VWxNyQpt2rSp97iyGJ3vX329/fbbKC8v92lKBcBw7LW+ffti7969KCkpqff4li1bAIDzsMgWKioqMGbMGOzbtw/r1q3D7373O9lVCgrKiHFICJvcQBw+fBhutxvTpk3D6aefXvexdetW7N27F507d8a8efNkV9ORfv75Z0RFRZ2yKJ18c8455wAQe3RrKYNvqampptfJyVauXIm4uDiMHTvWp59jS+2lCRMmoLa2tm6RDSD2Oc7MzMSgQYPQrl07ibUjalltbS2uvPJKbNmyBW+88QbOPfdc2VVynLy8vFMeq66uxrJly5CcnMydFQLUu3dvvPXWW3j77bfrPt566y307NkTHTt2xNtvv40bb7xRdjVtrbH38DfffIN33333lIMVyHfKvNeXX3653uMvvfQSwsPDMXz4cAm1cqa8vDx88sknuOyyy+rWh3mLC/K8NHDgQEycOBGzZ8/GsWPH0KVLF7z22mvIzs5GZmam7Oo5xr/+9S8UFxfXXUW/++67yM7OBgBMmzYN8fHxMqtna3fddRfee+89jBkzBvn5+VixYkW9r19zzTWSauYcU6dORUlJCYYNG4a2bdvi6NGjWLlyJfbu3YvMzEyEhobKrqKtJScnY9y4cac8vnDhQgDweXSITnXllVciOjoagwcPRlpaGnbv3o0lS5YgNjYWjz/+uOzq2V6fPn3w5z//Ga+88gpqamowbNgwbNy4EVlZWbj33ns5zU1Ha9asQW1trc9TKgCekOeTyspK3HfffVixYgWKiopw9tlnY968ebjwwgtlV80xOnfuXHeKmLJITNng/8CBA17vUUinGjFiBDZv3tzoghqXy4Xa2loJtXKWNWvW4OWXX8a3336LgoICxMfH49xzz8Wdd96J888/X3b1HGvEiBEoKCjArl27ZFfF9p599lmsXLkS+/btw4kTJ/6/vTsPiXL74zj+ecasKadyKU2KMFsoVKSygmjTFi9F+05EVNiCVgTttBiVSJthe1EGBUFlmERUtlFSUCaYDBZRUlGUy5S0Z/n8/rhPw52fXaduXZXb+wWCc57nPM/3+I8fDneHkEwAAAe6SURBVOecUXBwsAYOHKg1a9YoPDy8rsv7T/j8+bNSUlKUkZGhZ8+eKSwsTImJiZo/f35dl/af0rt3bxUXF+vZs2c/vOmccAwAAABYWHMMAAAAWAjHAAAAgIVwDAAAAFgIxwAAAICFcAwAAABYCMcAAACAhXAMAAAAWAjHAAAAgIVwDAAAAFgIxwBQT9hsNs2bN6+uy6hVAwYMUGxsbF2XAQBuhGMAqEXXr1/X2rVrVVFR8c3rhmHUckV1yzCM327MAOo3wjEA1CJv4fh3k5OTo/Pnz9d1GQDg1qCuCwCA35FpmnVdQr3QoAH/hgDUL8wcA0AtSU5O1pIlSyRJ7dq1k81mk81m0+PHjz3uy8rKUmRkpOx2uyIjI3Xu3Llqz3r69KlmzJihkJAQ930ZGRlea8jIyJDNZqt2b0pKimw2m86ePVtj/1OnTmnYsGFq3bq17Ha7OnTooPXr16uqqsp9T1FRkRo3bqxp06Z59M3NzZWPj4+WL1/ubvvWmuPt27crIiJCfn5+CgwMVI8ePXT06FGvYwOAX8Ewmb4AgFpRWFio1NRUHT16VNu2bVOLFi0kSaNGjVKTJk1ks9kUHR2tkpISJSYmyuFwKD09Xc+fP9fjx48VGBgoSXrx4oViYmLk4+OjhIQEtWzZUmfOnFF2drbS0tK0YMGCGusYMWKErl27psLCQrVp00aFhYWKiYnRtGnTtG/fvhr7jhkzRo0aNVKPHj3kcDh08eJFHT9+XIsWLdLGjRvd923ZskWLFy/WqVOnNHz4cL19+1bR0dFq3Lix8vPz5evrK0mKjY2VYRi6dOmSJGn//v2aPXu2xo8fr8GDB+vDhw8qKCiQw+FQWlraP/7bA8B3MwEAtWbTpk2mYRjmo0ePql0zDMO02+3mw4cP3W137twxDcMwd+zY4W6bOXOm2bp1a9Plcnn0nzx5sunv72++f/++xhqeP39uBgUFmUOGDDE/fvxodu3a1QwLCzNfv37ttf5vPXvOnDmmn5+f+enTJ3dbVVWV2bdvX7NVq1ZmeXm5mZiYaDZs2NC8ffu2R9/+/fubsbGx7s8jR440o6KivNYBAP8WllUAQD0yaNAgtWvXzv05KipKzZo1U3FxsaQ/1ypnZmZq+PDh+vLli8rKytw/Q4YMUUVFhfLz82t8R0hIiHbu3KmcnBz17dtXd+7c0cGDB+VwOLzWZ7fb3b+/fv1aZWVl6tOnj969e6e7d++6rxmGoUOHDunNmzf6448/tHv3bi1fvlzdunWr8fkBAQF68uSJ8vLyvNYCAP8GwjEA1CNt27at1hYQEKCXL19KkkpLS1VRUaG9e/cqODjY42fGjBkyDEOlpaVe3zNx4kQNHTpUt27dUkJCwnefNex0OjV69Gj5+/urefPmCg4O1tSpUyWp2gkc4eHhSk5OVl5eniIjI7Vq1Sqvz1+6dKkcDod69uypTp06KSkpSdevX/+u2gDgV2CbMADUIz4+Pt9sN63tIV83vk2dOrXahrevoqKivL6nvLzcPTvrdDplmqbX84ZfvXql/v37y9/fX+vWrVP79u1lt9t1+/ZtLV261GNT3ldfNxM+ffpUZWVlCgkJqfEdnTt31r1793T69GmdPXtWmZmZ2rVrl1avXq3k5GSv4wKAn0U4BoBa9LNfeNGyZUs1bdpUnz9/Vlxc3D9+TmJiot6+favU1FQtW7ZM27Zt08KFC2vsc+XKFblcLmVlZalPnz7u9gcPHnzz/j179ujChQtKSUlRSkqKZs+eraysLK+1NWnSRBMmTNCECRNUWVmpMWPGaMOGDVqxYoUaNmz4YwMFgB/EsgoAqEV+fn6S5F4m8aN8fHw0duxYZWZmyul0Vrv+PUsqTpw4oWPHjik1NVVLlizRpEmTtHLlSt2/f9/ruyV5zBB/+vRJu3btqnZvcXGxFi9erHHjxmnZsmXavHmzsrOzdfjw4RrfUV5e7vHZ19dXXbp0kSRVVlZ6HRsA/CyOcgOAWpSXl6eePXtq6NChmjhxonx9fTVixAj3UW5JSUlKT0/36BMWFqa4uDgdPHhQklRSUqJevXqptLRUCQkJ6tKli1wul/Lz83Xx4sVqAfOvSkpKFBERoejoaF24cEGS5HK5FBERofDwcOXm5v7t7LbL5VLHjh3VrFkzzZ8/X5J0+PBhmaapgoICXblyRf369ZNpmoqLi1NRUZGcTqeCgoIkSfHx8bp165acTqdCQ0Ml/XnOsWEYunz5siSpe/fuCg0NVe/evRUSEqKioiLt3LlT8fHx3zXrDAA/i5ljAKhFMTExWrdunQoKCjR9+nRNmTJFZWVlNfb5/7AaHBysmzdvavr06Tp58qTmzZun9PR0vXr1yuOs4W+ZO3euKisrPb4EJDAwUPv27dONGze0ZcuWv+0bGBio06dPKzQ0VCtXrtTWrVsVHx+vjRs3etS4fft2Xb16VXv27HEHY0k6cOCAqqqqNGvWLI+x/bXvnDlz9ObNG6WlpSkpKUnZ2dlasGCBjhw5UuO4AOBXYeYYAAAAsDBzDAAAAFgIxwAAAICFcAwAAABYCMcAAACAhXAMAAAAWAjHAAAAgIVwDAAAAFgIxwAAAICFcAwAAABYCMcAAACAhXAMAAAAWAjHAAAAgIVwDAAAAFj+B8cC5tIEMiJUAAAAAElFTkSuQmCC",
"text": [
"Figure(PyObject <matplotlib.figure.Figure object at 0x10c1f3bd0>)"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"PyObject <matplotlib.text.Text object at 0x117c31bd0>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets try it with something else. The key is to define the neccesary method for `Base.writemime`. This is relativley new functionality, but the hope is that many packages will support this type of display since it was built so early in the language development."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"type HTML\n",
" s::String\n",
"end\n",
"import Base.writemime\n",
"writemime(io::IO, ::MIME\"text/html\", x::HTML) = print(io, x.s)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"writemime (generic function with 32 methods)"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = HTML(\"\"\"<ul> <li> Hello from a bulleted list! <font color=\"red\">Thanks HTML!</font> </ul>\"\"\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<ul> <li> Hello from a bulleted list! <font color=\"red\">Thanks HTML!</font> </ul>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
"HTML(\"<ul> <li> Hello from a bulleted list! <font color=\\\"red\\\">Thanks HTML!</font> </ul>\")"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One hurdle when moving from python to julia is discovery. In python if you have some obect `x`, you can usually find out a lot of the possible things to do with it by using autocomplete, `x.` then `tab` will bring up a bunch of methods. Since julia discourages this type of organization, instead we use `methods` and `methodswith`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"methodswith(typeof(x))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"3-element Array{Method,1}:<ul><li> writemime(io::<b>IO</b>,::<b>MIME{symbol(\"text/html\")}</b>,x::<b>HTML</b>) at In[4]:5<li> writemime(io::<b>IO</b>,::<b>MIME{symbol(\"text/html\")}</b>,x::<b>HTML</b>) at In[4]:5<li> writemime(io::<b>IO</b>,::<b>MIME{symbol(\"text/html\")}</b>,x::<b>HTML</b>) at In[4]:5</ul>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"3-element Array{Method,1}:\n",
" writemime(io::IO,::MIME{symbol(\"text/html\")},x::HTML) at In[4]:5\n",
" writemime(io::IO,::MIME{symbol(\"text/html\")},x::HTML) at In[4]:5\n",
" writemime(io::IO,::MIME{symbol(\"text/html\")},x::HTML) at In[4]:5"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"methods(/)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"53 methods for generic function <b>/</b>:<ul><li> /(x::<b>Integer</b>,y::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/int.jl#L50\" target=\"_blank\">int.jl:50</a><li> /(x::<b>Float32</b>,y::<b>Float32</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/float.jl#L125\" target=\"_blank\">float.jl:125</a><li> /(x::<b>Float64</b>,y::<b>Float64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/float.jl#L126\" target=\"_blank\">float.jl:126</a><li> /(x::<b>Rational{T<:Integer}</b>,z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/rational.jl#L120\" target=\"_blank\">rational.jl:120</a><li> /(a::<b>Real</b>,w::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/complex.jl#L126\" target=\"_blank\">complex.jl:126</a><li> /(z::<b>Complex{Float64}</b>,w::<b>Complex{Float64}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/complex.jl#L162\" target=\"_blank\">complex.jl:162</a><li> /(a::<b>Complex{T<:Real}</b>,b::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/complex.jl#L130\" target=\"_blank\">complex.jl:130</a><li> /(z::<b>Number</b>,w::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/complex.jl#L125\" target=\"_blank\">complex.jl:125</a><li> /(z::<b>Complex{T<:Real}</b>,x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/complex.jl#L127\" target=\"_blank\">complex.jl:127</a><li> /(x::<b>Rational{T<:Integer}</b>,y::<b>Rational{T<:Integer}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/rational.jl#L119\" target=\"_blank\">rational.jl:119</a><li> /(a::<b>Float16</b>,b::<b>Float16</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/float16.jl#L132\" target=\"_blank\">float16.jl:132</a><li> /(x::<b>BigFloat</b>,c::<b>Uint64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L277\" target=\"_blank\">mpfr.jl:277</a><li> /(c::<b>Uint64</b>,x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L282\" target=\"_blank\">mpfr.jl:282</a><li> /(x::<b>BigFloat</b>,c::<b>Union(Uint64,Uint16,Uint32,Uint8)</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L286\" target=\"_blank\">mpfr.jl:286</a><li> /(c::<b>Union(Uint64,Uint16,Uint32,Uint8)</b>,x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L287\" target=\"_blank\">mpfr.jl:287</a><li> /(x::<b>BigFloat</b>,c::<b>Int64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L291\" target=\"_blank\">mpfr.jl:291</a><li> /(c::<b>Int64</b>,x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L296\" target=\"_blank\">mpfr.jl:296</a><li> /(x::<b>BigFloat</b>,c::<b>Union(Int8,Int16,Int64,Int32)</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L300\" target=\"_blank\">mpfr.jl:300</a><li> /(c::<b>Union(Int8,Int16,Int64,Int32)</b>,x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L301\" target=\"_blank\">mpfr.jl:301</a><li> /(x::<b>BigFloat</b>,c::<b>Float64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L305\" target=\"_blank\">mpfr.jl:305</a><li> /(c::<b>Float64</b>,x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L310\" target=\"_blank\">mpfr.jl:310</a><li> /(x::<b>BigFloat</b>,c::<b>Float32</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L314\" target=\"_blank\">mpfr.jl:314</a><li> /(c::<b>Float32</b>,x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L315\" target=\"_blank\">mpfr.jl:315</a><li> /(x::<b>BigFloat</b>,c::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L319\" target=\"_blank\">mpfr.jl:319</a><li> /(x::<b>BigFloat</b>,y::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/mpfr.jl#L328\" target=\"_blank\">mpfr.jl:328</a><li> /<i>{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}</i>(A::<b>Triangular{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}</b>,B::<b>Triangular{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/triangular.jl#L22\" target=\"_blank\">linalg/triangular.jl:22</a><li> /<i>{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}</i>(A::<b>Triangular{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}</b>,B::<b>Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2},DenseArray{T,1},SubArray{T,1,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)})</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/triangular.jl#L23\" target=\"_blank\">linalg/triangular.jl:23</a><li> /<i>{TA,TB,SA<:AbstractArray{T,2},SB<:AbstractArray{T,2},UpLoA,UpLoB,IsUnitA,IsUnitB}</i>(A::<b>Triangular{TA,SA<:AbstractArray{T,2},UpLoA,IsUnitA}</b>,B::<b>Triangular{TB,SB<:AbstractArray{T,2},UpLoB,IsUnitB}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/triangular.jl#L208\" target=\"_blank\">linalg/triangular.jl:208</a><li> /<i>{T,S<:AbstractArray{T,2},UpLo,IsUnit}</i>(A::<b>Triangular{T,S<:AbstractArray{T,2},UpLo,IsUnit}</b>,B::<b>Union(AbstractArray{T,1},AbstractArray{T,2})</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/triangular.jl#L209\" target=\"_blank\">linalg/triangular.jl:209</a><li> /<i>{T,S<:AbstractArray{T,2},UpLo,IsUnit}</i>(A::<b>AbstractArray{T,2}</b>,B::<b>Triangular{T,S<:AbstractArray{T,2},UpLo,IsUnit}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/triangular.jl#L210\" target=\"_blank\">linalg/triangular.jl:210</a><li> /(Da::<b>Diagonal{T}</b>,Db::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/diagonal.jl#L59\" target=\"_blank\">linalg/diagonal.jl:59</a><li> /<i>{T}</i>(A::<b>Bidiagonal{T}</b>,B::<b>AbstractArray{T,1}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/bidiag.jl#L119\" target=\"_blank\">linalg/bidiag.jl:119</a><li> /(A::<b>Union(AbstractArray{T,1},AbstractArray{T,2})</b>,B::<b>Union(AbstractArray{T,1},AbstractArray{T,2})</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/generic.jl#L235\" target=\"_blank\">linalg/generic.jl:235</a><li> /(x::<b>MathConst{sym}</b>,y::<b>MathConst{sym}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/constants.jl#L23\" target=\"_blank\">constants.jl:23</a><li> /<i>{f}</i>(x::<b>Fixed32{f}</b>,y::<b>Fixed32{f}</b>) at <a href=\"https://github.com/JeffBezanson/FixedPointNumbers.jl/tree/f4512651de92e50565205765b1bd996b987a3c81/src/fixed32.jl#L38\" target=\"_blank\">/Users/galenoneil/.julia/v0.3/FixedPointNumbers/src/fixed32.jl:38</a><li> /(x::<b>Ufixed</b>,y::<b>Ufixed</b>) at <a href=\"https://github.com/JeffBezanson/FixedPointNumbers.jl/tree/f4512651de92e50565205765b1bd996b987a3c81/src/ufixed.jl#L87\" target=\"_blank\">/Users/galenoneil/.julia/v0.3/FixedPointNumbers/src/ufixed.jl:87</a><li> /<i>{T<:Number}</i>(x::<b>T<:Number</b>,y::<b>T<:Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/promotion.jl#L191\" target=\"_blank\">promotion.jl:191</a><li> /(x::<b>Number</b>,y::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/promotion.jl#L161\" target=\"_blank\">promotion.jl:161</a><li> /(B::<b>BitArray{N}</b>,x::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/bitarray.jl#L884\" target=\"_blank\">bitarray.jl:884</a><li> /(A::<b>SymTridiagonal{T}</b>,B::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/tridiag.jl#L49\" target=\"_blank\">linalg/tridiag.jl:49</a><li> /(A::<b>Tridiagonal{T}</b>,B::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/tridiag.jl#L211\" target=\"_blank\">linalg/tridiag.jl:211</a><li> /<i>{T,S,UpLo,IsUnit}</i>(A::<b>Triangular{T,S,UpLo,IsUnit}</b>,x::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/triangular.jl#L176\" target=\"_blank\">linalg/triangular.jl:176</a><li> /<i>{T<:Number}</i>(D::<b>Diagonal{T}</b>,x::<b>T<:Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/diagonal.jl#L49\" target=\"_blank\">linalg/diagonal.jl:49</a><li> /(A::<b>Bidiagonal{T}</b>,B::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/bidiag.jl#L110\" target=\"_blank\">linalg/bidiag.jl:110</a><li> /(A::<b>AbstractArray{T,N}</b>,B::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/abstractarray.jl#L370\" target=\"_blank\">abstractarray.jl:370</a><li> /(A::<b>BitArray{N}</b>,B::<b>BitArray{N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/bitarray.jl#L881\" target=\"_blank\">bitarray.jl:881</a><li> /(x::<b>Number</b>,B::<b>BitArray{N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/bitarray.jl#L885\" target=\"_blank\">bitarray.jl:885</a><li> /(B::<b>AbstractArray{T,2}</b>,A::<b>LU{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/lu.jl#L318\" target=\"_blank\">linalg/lu.jl:318</a><li> /(J1::<b>UniformScaling{T<:Number}</b>,J2::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/uniformscaling.jl#L78\" target=\"_blank\">linalg/uniformscaling.jl:78</a><li> /(J::<b>UniformScaling{T<:Number}</b>,A::<b>AbstractArray{T,2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/uniformscaling.jl#L79\" target=\"_blank\">linalg/uniformscaling.jl:79</a><li> /(A::<b>AbstractArray{T,2}</b>,J::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/uniformscaling.jl#L80\" target=\"_blank\">linalg/uniformscaling.jl:80</a><li> /(J::<b>UniformScaling{T<:Number}</b>,x::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/linalg/uniformscaling.jl#L82\" target=\"_blank\">linalg/uniformscaling.jl:82</a><li> /(p::<b>Vec2</b>,s::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/c03f413bbdb46c00033f4eaad402995cfe3b7be5/base/graphics.jl#L63\" target=\"_blank\">graphics.jl:63</a></ul>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"# 53 methods for generic function \"/\":\n",
"/(x::Integer,y::Integer) at int.jl:50\n",
"/(x::Float32,y::Float32) at float.jl:125\n",
"/(x::Float64,y::Float64) at float.jl:126\n",
"/(x::Rational{T<:Integer},z::Complex{T<:Real}) at rational.jl:120\n",
"/(a::Real,w::Complex{T<:Real}) at complex.jl:126\n",
"/(z::Complex{Float64},w::Complex{Float64}) at complex.jl:162\n",
"/(a::Complex{T<:Real},b::Complex{T<:Real}) at complex.jl:130\n",
"/(z::Number,w::Complex{T<:Real}) at complex.jl:125\n",
"/(z::Complex{T<:Real},x::Real) at complex.jl:127\n",
"/(x::Rational{T<:Integer},y::Rational{T<:Integer}) at rational.jl:119\n",
"/(a::Float16,b::Float16) at float16.jl:132\n",
"/(x::BigFloat,c::Uint64) at mpfr.jl:277\n",
"/(c::Uint64,x::BigFloat) at mpfr.jl:282\n",
"/(x::BigFloat,c::Union(Uint64,Uint16,Uint32,Uint8)) at mpfr.jl:286\n",
"/(c::Union(Uint64,Uint16,Uint32,Uint8),x::BigFloat) at mpfr.jl:287\n",
"/(x::BigFloat,c::Int64) at mpfr.jl:291\n",
"/(c::Int64,x::BigFloat) at mpfr.jl:296\n",
"/(x::BigFloat,c::Union(Int8,Int16,Int64,Int32)) at mpfr.jl:300\n",
"/(c::Union(Int8,Int16,Int64,Int32),x::BigFloat) at mpfr.jl:301\n",
"/(x::BigFloat,c::Float64) at mpfr.jl:305\n",
"/(c::Float64,x::BigFloat) at mpfr.jl:310\n",
"/(x::BigFloat,c::Float32) at mpfr.jl:314\n",
"/(c::Float32,x::BigFloat) at mpfr.jl:315\n",
"/(x::BigFloat,c::BigInt) at mpfr.jl:319\n",
"/(x::BigFloat,y::BigFloat) at mpfr.jl:328\n",
"/{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}(A::Triangular{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit},B::Triangular{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}) at linalg/triangular.jl:22\n",
"/{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit}(A::Triangular{T<:Union(Float64,Complex{Float64},Float32,Complex{Float32}),S<:Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2}),UpLo,IsUnit},B::Union(SubArray{T,2,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)},DenseArray{T,2},DenseArray{T,1},SubArray{T,1,A<:DenseArray{T,N},I<:(Union(Int64,Range{Int64})...,)})) at linalg/triangular.jl:23\n",
"/{TA,TB,SA<:AbstractArray{T,2},SB<:AbstractArray{T,2},UpLoA,UpLoB,IsUnitA,IsUnitB}(A::Triangular{TA,SA<:AbstractArray{T,2},UpLoA,IsUnitA},B::Triangular{TB,SB<:AbstractArray{T,2},UpLoB,IsUnitB}) at linalg/triangular.jl:208\n",
"/{T,S<:AbstractArray{T,2},UpLo,IsUnit}(A::Triangular{T,S<:AbstractArray{T,2},UpLo,IsUnit},B::Union(AbstractArray{T,1},AbstractArray{T,2})) at linalg/triangular.jl:209\n",
"/{T,S<:AbstractArray{T,2},UpLo,IsUnit}(A::AbstractArray{T,2},B::Triangular{T,S<:AbstractArray{T,2},UpLo,IsUnit}) at linalg/triangular.jl:210\n",
"/(Da::Diagonal{T},Db::Diagonal{T}) at linalg/diagonal.jl:59\n",
"/{T}(A::Bidiagonal{T},B::AbstractArray{T,1}) at linalg/bidiag.jl:119\n",
"/(A::Union(AbstractArray{T,1},AbstractArray{T,2}),B::Union(AbstractArray{T,1},AbstractArray{T,2})) at linalg/generic.jl:235\n",
"/(x::MathConst{sym},y::MathConst{sym}) at constants.jl:23\n",
"/{f}(x::Fixed32{f},y::Fixed32{f}) at /Users/galenoneil/.julia/v0.3/FixedPointNumbers/src/fixed32.jl:38\n",
"/(x::Ufixed,y::Ufixed) at /Users/galenoneil/.julia/v0.3/FixedPointNumbers/src/ufixed.jl:87\n",
"/{T<:Number}(x::T<:Number,y::T<:Number) at promotion.jl:191\n",
"/(x::Number,y::Number) at promotion.jl:161\n",
"/(B::BitArray{N},x::Number) at bitarray.jl:884\n",
"/(A::SymTridiagonal{T},B::Number) at linalg/tridiag.jl:49\n",
"/(A::Tridiagonal{T},B::Number) at linalg/tridiag.jl:211\n",
"/{T,S,UpLo,IsUnit}(A::Triangular{T,S,UpLo,IsUnit},x::Number) at linalg/triangular.jl:176\n",
"/{T<:Number}(D::Diagonal{T},x::T<:Number) at linalg/diagonal.jl:49\n",
"/(A::Bidiagonal{T},B::Number) at linalg/bidiag.jl:110\n",
"/(A::AbstractArray{T,N},B::Number) at abstractarray.jl:370\n",
"/(A::BitArray{N},B::BitArray{N}) at bitarray.jl:881\n",
"/(x::Number,B::BitArray{N}) at bitarray.jl:885\n",
"/(B::AbstractArray{T,2},A::LU{T,S<:AbstractArray{T,2}}) at linalg/lu.jl:318\n",
"/(J1::UniformScaling{T<:Number},J2::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:78\n",
"/(J::UniformScaling{T<:Number},A::AbstractArray{T,2}) at linalg/uniformscaling.jl:79\n",
"/(A::AbstractArray{T,2},J::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:80\n",
"/(J::UniformScaling{T<:Number},x::Number) at linalg/uniformscaling.jl:82\n",
"/(p::Vec2,s::Real) at graphics.jl:63"
]
}
],
"prompt_number": 7
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Now is a good time to start questions."
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment