MilesCranmer commited on
Commit
de1e8dd
1 Parent(s): a54d0fa

Better explain pure-Julia function

Browse files
Files changed (1) hide show
  1. examples/pysr_demo.ipynb +23 -9
examples/pysr_demo.ipynb CHANGED
@@ -846,7 +846,7 @@
846
  "source": [
847
  "jl.eval(\"\"\"\n",
848
  "function p(i::T) where T\n",
849
- " if (0.5 < i < 1000)\n",
850
  " return T(Primes.prime(round(Int, i)))\n",
851
  " else\n",
852
  " return T(NaN)\n",
@@ -861,12 +861,26 @@
861
  "metadata": {},
862
  "source": [
863
  "\n",
864
- "We have created a a function `p`, which takes an arbitrary number as input.\n",
865
  "`p` first checks whether the input is between 0.5 and 1000.\n",
866
  "If out-of-bounds, it returns `NaN`.\n",
867
- "If in-bounds, it rounds it to the nearest integer, compures the corresponding prime number, and then\n",
868
  "converts it to the same type as input.\n",
869
  "\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
870
  "Next, let's generate a list of primes for our test dataset.\n",
871
  "Since we are using PyJulia, we can just call `p` directly to do this:\n"
872
  ]
@@ -1357,14 +1371,14 @@
1357
  "name": "pysr_demo.ipynb",
1358
  "provenance": []
1359
  },
1360
- "language_info": {
1361
- "name": "python"
1362
- },
1363
  "kernelspec": {
1364
- "name": "python3",
1365
- "display_name": "Python 3"
1366
  },
1367
- "gpuClass": "standard"
 
 
1368
  },
1369
  "nbformat": 4,
1370
  "nbformat_minor": 0
 
846
  "source": [
847
  "jl.eval(\"\"\"\n",
848
  "function p(i::T) where T\n",
849
+ " if 0.5 < i < 1000\n",
850
  " return T(Primes.prime(round(Int, i)))\n",
851
  " else\n",
852
  " return T(NaN)\n",
 
861
  "metadata": {},
862
  "source": [
863
  "\n",
864
+ "We have created a function `p`, which takes a number `i` of type `T` (e.g., `T=Float64`).\n",
865
  "`p` first checks whether the input is between 0.5 and 1000.\n",
866
  "If out-of-bounds, it returns `NaN`.\n",
867
+ "If in-bounds, it rounds it to the nearest integer, computes the corresponding prime number, and then\n",
868
  "converts it to the same type as input.\n",
869
  "\n",
870
+ "The equivalent function in Python would be:\n",
871
+ "\n",
872
+ "```python\n",
873
+ "import sympy\n",
874
+ "\n",
875
+ "def p(i):\n",
876
+ " if 0.5 < i < 1000:\n",
877
+ " return float(sympy.prime(int(round(i))))\n",
878
+ " else:\n",
879
+ " return float(\"nan\")\n",
880
+ "```\n",
881
+ "\n",
882
+ "(However, note that this version assumes 64-bit float input, rather than any input type `T`)\n",
883
+ "\n",
884
  "Next, let's generate a list of primes for our test dataset.\n",
885
  "Since we are using PyJulia, we can just call `p` directly to do this:\n"
886
  ]
 
1371
  "name": "pysr_demo.ipynb",
1372
  "provenance": []
1373
  },
1374
+ "gpuClass": "standard",
 
 
1375
  "kernelspec": {
1376
+ "display_name": "Python 3",
1377
+ "name": "python3"
1378
  },
1379
+ "language_info": {
1380
+ "name": "python"
1381
+ }
1382
  },
1383
  "nbformat": 4,
1384
  "nbformat_minor": 0