{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# lgo & gonum\n", "This notebook demonstrates lgo works with [gonum](https://github.com/gonum), the most popular numerical computation packages in Go." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import (\n", " \"bytes\"\n", " \"fmt\"\n", " \"image/color\"\n", " \"math\"\n", " \"math/rand\"\n", " \n", " \"gonum.org/v1/gonum/mat\"\n", " \"gonum.org/v1/plot\"\n", " \"gonum.org/v1/plot/plotter\"\n", " \"gonum.org/v1/plot/plotutil\"\n", " \"gonum.org/v1/plot/vg\"\n", " \"gonum.org/v1/plot/vg/draw\"\n", " \"gonum.org/v1/plot/vg/vgimg\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# gonum/plot examples\n", "https://github.com/gonum/plot/wiki/Example-plots" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "func DisplayPlot(p *plot.Plot) {\n", " // Save the plot to a PNG file.\n", " var buf bytes.Buffer\n", " c, err := p.WriterTo(4*vg.Inch, 4*vg.Inch, \"png\")\n", " if err != nil {\n", " panic(err)\n", " }\n", " if _, err := c.WriteTo(&buf); err != nil {\n", " panic(err)\n", " }\n", " _ctx.Display.PNG(buf.Bytes(), nil)\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotutil\n", "https://github.com/gonum/plot/wiki/Example-plots#plotutil" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{\n", " p, err := plot.New()\n", " if err != nil {\n", " panic(err)\n", " }\n", " \n", " p.Title.Text = \"Plotutil example\"\n", " p.X.Label.Text = \"X\"\n", " p.Y.Label.Text = \"Y\"\n", "\n", " err = plotutil.AddLinePoints(\n", " p,\n", " \"First\", randomPoints(15),\n", " \"Second\", randomPoints(15),\n", " \"Third\", randomPoints(15))\n", " if err != nil {\n", " panic(err)\n", " }\n", "\n", " DisplayPlot(p)\n", "}\n", "\n", "// randomPoints returns some random x, y points.\n", "func randomPoints(n int) plotter.XYs {\n", " pts := make(plotter.XYs, n)\n", " for i := range pts {\n", " if i == 0 {\n", " pts[i].X = rand.Float64()\n", " } else {\n", " pts[i].X = pts[i-1].X + rand.Float64()\n", " }\n", " pts[i].Y = pts[i].X + 10*rand.Float64()\n", " }\n", " return pts\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More Detailed Style Settings\n", "https://github.com/gonum/plot/wiki/Example-plots#more-detailed-style-settings" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAIAAAArpSLoAABn40lEQVR4nOydB1xTV/vHfwmEpSCgICAKAg4cEbVuVBxVq1Ztseprq9VqtUNb66qz1tlara91t85qq6/av62jaivEgKg4QERFRbYYluxNQvL/hIsxQAgZ9+YGON/66Sf35txzHkZ+nPOc5zyPqUwmA4FAILABl20DCARC44UIEIFAYA0iQAQCgTVM2TaAoCmZmZkKh529vT2Xq9Efj/T0dEdHR7psyMrKkkql1W5yuVx7e3u6htCE8xVYWFjs2LHDkOMSaIcIUL3h9OnTu3fvTkxMHDduXExMTKtWrUaPHj1r1iw1j0RFRXXu3Pn8+fNjx46lxYY///xzz549UVFRkydPBlBSUlJUVBQZGZmQkEBL/xry9ttv379//48//jDkoAQmIAJUb/jkk09CQkKKi4t/++03AH///ffYsWN79uzp4+NT2yPt2rU7cODAwIED1fd87949qVTas2fPOm2YNWvWnTt3Xrx4ceTIEcXNSZMmafmlEAiVEB9QfWXUqFEODg779u1Tvpmfn698yePxZs2a1axZs2rPZmdnK6+kVq9eHR8fr9wgLS1NLBZraMm8efM0aVZQUKCyT6lUmpaWVpttFGVlZTk5Oer7l0qlRUVFmplMMBaIANVXuFwuj8eTSCQAxGLxgQMHJk2atHjx4vHjxx89epTyFm3fvt3BweHMmTOU36Rt27bTpk2bOHFily5d3NzcgoODAXz33XeXL1/evn37lClTAPz777/jxo3bvHmzr6/vtm3b1NtQXFx89erVQYMGUS6q+fPn29razp8/v7Cw8Pfff+/SpcvJkycB3L9/v3v37kuWLHn33Xc/+OADALm5ufPmzbO3t1+yZEn37t1btWrVs2fPrVu3Dhs2rF27dm5ubjdu3KBsbt269dgKOnfuPHXq1KioqJpmFBQUbNiwwd/f/+OPP545c+aLFy8Y+64T6EZGqD+8//77np6e1OubN28CuHXrlkwm+/vvv11dXUtKSmQyWWZmppmZWVhYGNWsSZMmJ06coF536NBhy5YtMpmsvLx86NChM2fOpO6bm5ufPn2aet2rV6+LFy/KZLKioqI//vijpg1z5861s7O7VMGuXbvWr1+veEsqlQ4bNmzEiBEymWzt2rWBgYHU/UePHl29epWyjcPh3Lt3TyaTXb16lVIiqgHl5JLJZGKxuHfv3p9//jn1rJub286dO2UyWWFh4cSJE0eOHEndX79+fbdu3ajXhw8f7tmzp1Qqlclko0aN2rhxIwPfewIjkBlQPSMvL2/Xrl0TJ0787LPPli9f3rt3bwAXLlzo2bOnubk5tUHWuXPnCxcuqOmEy+X27dv38ePHNd/KzMzcu3dvamqqpaWlv7+/ysclEklMBdV8zxwO59ChQ7du3ZoxY4aZmdnQoUOp+506dfLz86Nss7KyevLkibIlVANHR8fc3FwApqamffv2ffr0abVBrays/P39g4ODS0tLq711+fJlX19fDocDoFu3bhcvXqzru0gwFogTup5hamrq7u6+cePGDh06KG5euXKF2pai6NatW0BAwDfffKOmHw6Ho/IUzoEDB+bOndumTZsxY8Zs2bLFy8urZhsrKyvK75Obm/vvv/8qv9WmTZv169d/9dVXsbGxiptxcXFr1641MTGxtbUtKyur057abOvevXtxcfHdu3cHDBigfF8oFLq5uc2YMYPamHN1dVXzhROMCiJA9QwrK6uae+rt2rVLTU1VXD5//rxjx4669T9kyJAnT55cuHBh8uTJ8fHxERERaho3a9bsvffeo/bRunfvTnmLr1275ufnN2fOnH/++YdqNmbMmClTpqxZswbAL7/8opthABITE7lcrre3d7X7Hh4eQ4cO3bBhg849E9iCLMEaAmPHjlVWinv37mkV+MPhcBQbT5cuXeJyuePGjduxY0dKSoomj0dHR58+fZp6vWrVqoULFx46dOjGjRuU1kgkktjYWEqe9CQ8PLxPnz41gx6HDx9OecQI9Q4yA6o3ZGRkZGdnl5aWRkdHu7m5UR4figkTJhw7dmzVqlX+/v67du3q2LHj8OHDAeTk5MhkMsrRW1ZWJhaL8/PzKedfQUEBdYfH43Xt2vXXX3+1tLTs1avX4sWLc3Nze/Toce3atZkzZ1azIT09/eXLl6WlpZSPqaioqKCg4ObNm56enpQX2draum/fvgBWrly5ePFiPz+/9u3b+/r6bt26taCgIDc3l8vlUrECBQUFlEuradOmhYWF5eXleXl5lCe7oKCgtLSUsg1AampqSkrKpUuXjh8/vmLFCkrU8vLyysrKCgoKmjZt6u/vf+TIkY8++mjcuHFSqdTKymrUqFEG//kQdEH1Yptg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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{\n", " // Get some random points\n", " n := 15\n", " scatterData := randomPoints(n)\n", " lineData := randomPoints(n)\n", " linePointsData := randomPoints(n)\n", "\n", " // Create a new plot, set its title and\n", " // axis labels.\n", " p, err := plot.New()\n", " if err != nil {\n", " panic(err)\n", " }\n", " p.Title.Text = \"Points Example\"\n", " p.X.Label.Text = \"X\"\n", " p.Y.Label.Text = \"Y\"\n", " // Draw a grid behind the data\n", " p.Add(plotter.NewGrid())\n", "\n", " // Make a scatter plotter and set its style.\n", " s, err := plotter.NewScatter(scatterData)\n", " if err != nil {\n", " panic(err)\n", " }\n", " s.GlyphStyle.Color = color.RGBA{R: 255, B: 128, A: 255}\n", "\n", " // Make a line plotter and set its style.\n", " l, err := plotter.NewLine(lineData)\n", " if err != nil {\n", " panic(err)\n", " }\n", " l.LineStyle.Width = vg.Points(1)\n", " l.LineStyle.Dashes = []vg.Length{vg.Points(5), vg.Points(5)}\n", " l.LineStyle.Color = color.RGBA{B: 255, A: 255}\n", "\n", " // Make a line plotter with points and set its style.\n", " lpLine, lpPoints, err := plotter.NewLinePoints(linePointsData)\n", " if err != nil {\n", " panic(err)\n", " }\n", " lpLine.Color = color.RGBA{G: 255, A: 255}\n", " lpPoints.Shape = draw.PyramidGlyph{}\n", " lpPoints.Color = color.RGBA{R: 255, A: 255}\n", "\n", " // Add the plotters to the plot, with a legend\n", " // entry for each\n", " p.Add(s, l, lpLine, lpPoints)\n", " p.Legend.Add(\"scatter\", s)\n", " p.Legend.Add(\"line\", l)\n", " p.Legend.Add(\"line points\", lpLine, lpPoints)\n", "\n", " DisplayPlot(p)\n", "}\n", "\n", "// randomPoints returns some random x, y points.\n", "func randomPoints(n int) plotter.XYs {\n", " pts := make(plotter.XYs, n)\n", " for i := range pts {\n", " if i == 0 {\n", " pts[i].X = rand.Float64()\n", " } else {\n", " pts[i].X = pts[i-1].X + rand.Float64()\n", " }\n", " pts[i].Y = pts[i].X + 10*rand.Float64()\n", " }\n", " return pts\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bar Charts\n", "https://github.com/gonum/plot/wiki/Example-plots#bar-charts" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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aW9vP3HixKCgIHpJ6cYbh4eH/5sP9K/hMjwASTt27GCz2YMGDdqwYYO5uTmXy01ISHj69KmBgQH9EGlRURGXy3316pW2tjZFUV988cWECRNmzJixaNEiPz+/mpoaNzc3erq6V69eixYtmjhxYlFRUUlJSXFxsfAZ1MTExLq6ugMHDtTX10+ZMqV5GSdOnFizZo21tfW6dev69evH4XASExN37do1f/78Dv347Q0gHx+fgICArl27crnccePGOTo60suMnTt3LiYmpnfv3vPmzWOxEHMALZOTk9u5c+fixYvj4uICAgJkZGS0tLRu3LhBTw/l5OTo6+vv2LEjNDTU1dVVUVGRoihfX9/8/Hw/P785c+bQF+ZpUVFRly5dUlJSmjFjhp2d3Zs3bzIzM+mX0tLSUlJSZs+ebWFh0WIZnTp1OnTo0IsXL+Lj469cuaKqqtqrVy8/P78mP0/WW1NeitnW0722aG80JCUleXt7y8rKJiUl2dnZZWdns9ns7777rm/fvnv27Dlx4oSbm9ulS5dEVC2AZOrRoHm/boPm/ZqamgsWNF2fqEuXLsJlpIW/qpycnExRlKurq76+/nvLMGjwjg1G9VN77yD/SnsDaP369bKyshRFGRoaVlRUpKam9u/f//bt299//z1FUc7OzqtXr268/c8//5yamtraaK9evcKa0B8b7r2mF03ag6/Usb+yAC36qNYdbKy9AUQ/tsvn8729vc3Nzfv3719cXJyWlkbHuaamJofDefHihTBWt27d+o7RPD0921kPiBifX33omAjHqx9tRLXwLzp0iNra2rNnz1pbW588efKbb74xMTEhXVFTIpidSUlJ2bhx4/Pnzw8fPkwf8ik2oFcD0NbWTkxMfPdxHQB0BFlZWXo16I+WCAKoT58+58+fr6ysNDc3371796BBgyorK6urq+Xk5OhH5po84QYAQGvvfUBcLpf+g4KCwldffXX9+vUuXbro6OjQ90oVFBQwmUwjIyNRlAoAkqa9AbR+/XrhnyMjI11dXen7O+lfm71//76FhQWTidsdAaAF7T0FKyoqWr58uYKCQmlpqaur61dffUVR1MmTJ3///fdly5YpKytfvHhRRKUCgKRpbwAdP36cXnxfRkZG2KmgoLB27Vrhr8cCALRINCdHjdNHCOkDAO+G2RkAIAYBBADEIIAAgBgEEAAQgwAC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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{\n", "\tgroupA := plotter.Values{20, 35, 30, 35, 27}\n", "\tgroupB := plotter.Values{25, 32, 34, 20, 25}\n", "\tgroupC := plotter.Values{12, 28, 15, 21, 8}\n", "\n", "\tp, err := plot.New()\n", "\tif err != nil {\n", "\t\tpanic(err)\n", "\t}\n", "\tp.Title.Text = \"Bar chart\"\n", "\tp.Y.Label.Text = \"Heights\"\n", "\n", "\tw := vg.Points(20)\n", "\n", "\tbarsA, err := plotter.NewBarChart(groupA, w)\n", "\tif err != nil {\n", "\t\tpanic(err)\n", "\t}\n", "\tbarsA.LineStyle.Width = vg.Length(0)\n", "\tbarsA.Color = plotutil.Color(0)\n", "\tbarsA.Offset = -w\n", "\n", "\tbarsB, err := plotter.NewBarChart(groupB, w)\n", "\tif err != nil {\n", "\t\tpanic(err)\n", "\t}\n", "\tbarsB.LineStyle.Width = vg.Length(0)\n", "\tbarsB.Color = plotutil.Color(1)\n", "\n", "\tbarsC, err := plotter.NewBarChart(groupC, w)\n", "\tif err != nil {\n", "\t\tpanic(err)\n", "\t}\n", "\tbarsC.LineStyle.Width = vg.Length(0)\n", "\tbarsC.Color = plotutil.Color(2)\n", "\tbarsC.Offset = w\n", "\n", "\tp.Add(barsA, barsB, barsC)\n", "\tp.Legend.Add(\"Group A\", barsA)\n", "\tp.Legend.Add(\"Group B\", barsB)\n", "\tp.Legend.Add(\"Group C\", barsC)\n", "\tp.Legend.Top = true\n", "\tp.NominalX(\"One\", \"Two\", \"Three\", \"Four\", \"Five\")\n", "\n", " DisplayPlot(p)\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Functions\n", "https://github.com/gonum/plot/wiki/Example-plots#functions" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{\n", "\tp, err := plot.New()\n", "\tif err != nil {\n", "\t\tpanic(err)\n", "\t}\n", "\tp.Title.Text = \"Functions\"\n", "\tp.X.Label.Text = \"X\"\n", "\tp.Y.Label.Text = \"Y\"\n", "\n", "\t// A quadratic function x^2\n", "\tquad := plotter.NewFunction(func(x float64) float64 { return x * x })\n", "\tquad.Color = color.RGBA{B: 255, A: 255}\n", "\n", "\t// An exponential function 2^x\n", "\texp := plotter.NewFunction(func(x float64) float64 { return math.Pow(2, x) })\n", "\texp.Dashes = []vg.Length{vg.Points(2), vg.Points(2)}\n", "\texp.Width = vg.Points(2)\n", "\texp.Color = color.RGBA{G: 255, A: 255}\n", "\n", "\t// The sine function, shifted and scaled\n", "\t// to be nicely visible on the plot.\n", "\tsin := plotter.NewFunction(func(x float64) float64 { return 10*math.Sin(x) + 50 })\n", "\tsin.Dashes = []vg.Length{vg.Points(4), vg.Points(5)}\n", "\tsin.Width = vg.Points(4)\n", "\tsin.Color = color.RGBA{R: 255, A: 255}\n", "\n", "\t// Add the functions and their legend entries.\n", "\tp.Add(quad, exp, sin)\n", "\tp.Legend.Add(\"x^2\", quad)\n", "\tp.Legend.Add(\"2^x\", exp)\n", "\tp.Legend.Add(\"10*sin(x)+50\", sin)\n", "\tp.Legend.ThumbnailWidth = vg.Inch*0.5\n", "\n", "\t// Set the axis ranges. Unlike other data sets,\n", "\t// functions don't set the axis ranges automatically\n", "\t// since functions don't necessarily have a\n", "\t// finite range of x and y values.\n", "\tp.X.Min = 0\n", "\tp.X.Max = 10\n", "\tp.Y.Min = 0\n", "\tp.Y.Max = 100\n", "\n", " DisplayPlot(p)\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# gonum/mat\n", "https://godoc.org/gonum.org/v1/gonum/mat" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import (\n", " \"fmt\"\n", " \n", " \"gonum.org/v1/gonum/mat\"\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c = ⎡16 0 0⎤\n", " ⎣ 0 0 16⎦\n" ] } ], "source": [ "// https://godoc.org/gonum.org/v1/gonum/mat#example-Dense-Mul\n", "{\n", " // Initialize two matrices, a and b.\n", " a := mat.NewDense(2, 2, []float64{\n", " 4, 0,\n", " 0, 4,\n", " })\n", " b := mat.NewDense(2, 3, []float64{\n", " 4, 0, 0,\n", " 0, 0, 4,\n", " })\n", "\n", " // Take the matrix product of a and b and place the result in c.\n", " var c mat.Dense\n", " c.Mul(a, b)\n", "\n", " // Print the result using the formatter.\n", " fc := mat.Formatted(&c, mat.Prefix(\" \"), mat.Squeeze())\n", " fmt.Printf(\"c = %v\\n\", fc)\n", "}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ia = ⎡0.25 -0⎤\n", " ⎣ 0 0.25⎦\n", "\n", "r = ⎡1 0⎤\n", " ⎣0 1⎦\n", "\n", "x = ⎡0.5 0⎤\n", " ⎣ 0 0.5⎦\n" ] } ], "source": [ "// https://godoc.org/gonum.org/v1/gonum/mat#example-Dense-Inverse\n", "{\n", " // Initialize two matrices, a and ia.\n", " a := mat.NewDense(2, 2, []float64{\n", " 4, 0,\n", " 0, 4,\n", " })\n", " var ia mat.Dense\n", "\n", " // Take the inverse of a and place the result in ia.\n", " ia.Inverse(a)\n", "\n", " // Print the result using the formatter.\n", " fa := mat.Formatted(&ia, mat.Prefix(\" \"), mat.Squeeze())\n", " fmt.Printf(\"ia = %.2g\\n\\n\", fa)\n", "\n", " // Confirm that A * A^-1 = I\n", " var r mat.Dense\n", " r.Mul(a, &ia)\n", " fr := mat.Formatted(&r, mat.Prefix(\" \"), mat.Squeeze())\n", " fmt.Printf(\"r = %v\\n\\n\", fr)\n", "\n", " // The Inverse operation, however, is numerically unstable,\n", " // and should typically be avoided.\n", " // For example, a common need is to find x = A^-1 * b.\n", " // In this case, the SolveVec method of VecDense\n", " // (if b is a Vector) or Solve method of Dense (if b is a\n", " // matrix) should used instead of computing the Inverse of A.\n", " b := mat.NewDense(2, 2, []float64{\n", " 2, 0,\n", " 0, 2,\n", " })\n", " var x mat.Dense\n", " x.Solve(a, b)\n", "\n", " // Print the result using the formatter.\n", " fx := mat.Formatted(&x, mat.Prefix(\" \"), mat.Squeeze())\n", " fmt.Printf(\"x = %v\\n\", fx)\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# gonum/stat\n", "https://godoc.org/gonum.org/v1/gonum/stat" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "true positive rate: [0 0.5 0.5 1 1]\n", "false positive rate: [0 0 0.5 0.5 1]\n", "auc: 0.75\n" ] } ], "source": [ "import (\n", " \"fmt\"\n", " \n", " \"gonum.org/v1/gonum/integrate\"\n", " \"gonum.org/v1/gonum/stat\"\n", ")\n", "\n", "{\n", " y := []float64{0.1, 0.35, 0.4, 0.8}\n", " classes := []bool{true, false, true, false}\n", " \n", " tpr, fpr := stat.ROC(0, y, classes, nil)\n", " // compute Area Under Curve\n", " auc := integrate.Trapezoidal(fpr, tpr)\n", " fmt.Printf(\"true positive rate: %v\\n\", tpr)\n", " fmt.Printf(\"false positive rate: %v\\n\", fpr)\n", " fmt.Printf(\"auc: %v\\n\", auc)\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# gonum/optimize\n", "https://godoc.org/gonum.org/v1/gonum/optimize" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "result.Status: GradientThreshold\n", "result.X: [1 1 1 1 1]\n", "result.F: 0\n", "result.Stats.FuncEvaluations: 35\n" ] } ], "source": [ "import (\n", " \"fmt\"\n", " \"os\"\n", " \n", " \"gonum.org/v1/gonum/optimize\"\n", " \"gonum.org/v1/gonum/optimize/functions\"\n", ")\n", "\n", "{\n", " p := optimize.Problem{\n", " Func: functions.ExtendedRosenbrock{}.Func,\n", " Grad: functions.ExtendedRosenbrock{}.Grad,\n", " }\n", "\n", " x := []float64{1.3, 0.7, 0.8, 1.9, 1.2}\n", " settings := optimize.DefaultSettings()\n", " settings.Recorder = nil\n", " settings.GradientThreshold = 1e-12\n", " settings.FunctionConverge = nil\n", "\n", " result, err := optimize.Local(p, x, settings, &optimize.BFGS{})\n", " if err != nil {\n", " fmt.Fprintln(os.Stderr, err)\n", " return\n", " }\n", " if err = result.Status.Err(); err != nil {\n", " fmt.Fprintln(os.Stderr, err)\n", " }\n", " fmt.Printf(\"result.Status: %v\\n\", result.Status)\n", " fmt.Printf(\"result.X: %v\\n\", result.X)\n", " fmt.Printf(\"result.F: %v\\n\", result.F)\n", " fmt.Printf(\"result.Stats.FuncEvaluations: %d\\n\", result.Stats.FuncEvaluations)\n", "}" ] } ], "metadata": { "kernelspec": { "display_name": "Go (lgo)", "language": "go", "name": "lgo" }, "language_info": { "file_extension": "", "mimetype": "", "name": "go", "version": "" } }, "nbformat": 4, "nbformat_minor": 2 }