{"id":1224,"date":"2014-04-26T23:19:14","date_gmt":"2014-04-27T05:19:14","guid":{"rendered":"http:\/\/www.ghyzmo.com\/?p=1224"},"modified":"2017-12-11T17:30:18","modified_gmt":"2017-12-12T00:30:18","slug":"hacking-math-i-math-precision-of-python","status":"publish","type":"post","link":"http:\/\/www.ghyzmo.com\/hacking-math-i-math-precision-of-python\/","title":{"rendered":"Hacking Math I--Math Precision of Python"},"content":{"rendered":"<p class=\"entry-title\"><em>\u00a9Fernando Caracena<\/em> 2014<\/p>\n<p>In a previous blog, \"<a href=\"http:\/\/www.ghyzmo.com\/a-beautiful-math-maze\/\">A beautiful Math Maze<\/a>\", I used python to explore various ideas in pure mathematics. The idea is that programming languages are math machines that contain within them the accumulated experience and knowledge of generations of mathematicians. We learn by doing, know by reflecting, and understand by sifting through knowledge and exploring its connections.\u00a0 Computers, therefore, can serve to tease out an undertanding of math ideas and relations, in other words, <strong><em>to hack math itself.<\/em><\/strong> If there were some popular demand for this, I might write a book on \"Hacking Math and Physics using computers\".<\/p>\n<h3><strong><em>When we used mnemonics<\/em><\/strong><\/h3>\n<p>I remember during my early days in physics, maybe in high school learning pi to about 14 decimal places, by using the mnemonic phrase:\"how I need a drink alcoholic of course after the heavy chapters involving quantum mechanics\". All you needed to do was count the number of characters\u00a0 in each word [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9], and remember where to put the decimal point. Of course, in those days such knowledge was redundant because slide rule accuracy was sufficient for most calculation, and even then fast math in one's head was almost as accurate, but much faster. Still, we were kids who wanted to dazzle the teachers and pull the A+ rabbit out of the grade hat, instead of just an A or mere B+. The development of computers and modern computer languages have rendered moot all of that intellectual <span class=\"hw\">prestidigitation<\/span>. Now our kids can get on with fast learning, provided that they are not presided over by <a href=\"http:\/\/www.washingtonpost.com\/blogs\/answer-sheet\/post\/a-critical-analysis-of-common-core-math-standards\/2012\/09\/18\/1584fd0c-f6b4-11e1-8253-3f495ae70650_blog.html\">professional morons who call themselves educators<\/a>, who are really latter day <a href=\"http:\/\/www.merriam-webster.com\/dictionary\/luddite\">Luddites<\/a>. Our kids have so much to learn to be able to manage the rapid advance of technology that we do then a disservice by holding them in trying to teach them arithmetic through complicated procedures. We should teach them how to use technology it self to bootstrap their rapid learning and gaining of understanding.<\/p>\n<p>I am impressed with the advance of technology and how its incorporation of voice input and visual output together give the whole population potential access to the entire intelligence of the human race.\u00a0 For example, I used the phrase,<em> \u201c<\/em>je ne sais quoi<em>\u201d<\/em> in front of my grandson, who promptly spoke it into his smart phone to get the instant definition. Now what is wrong with that? It is faster than going to the huge dictionary and thumbing through the thin sheets. People voice concern over the dangers to the human race on over-reliance on technology to solve mental exercises as a crutch that could give way to a new Dark Age given some large-scale disaster that produces nepenthe. The worst case scenario would be that some insane world leader could release some destructive force that destroys the whole intellectual-technological network and plunges the world into a super nepenthe that resets the whole, (by then) starving human race back to the stone age. When all the batteries run out, we would all then be in deep trouble. But then, we would not have any paper to use for math calculations either; and of course, we would be too busy surviving to care anyway. So let us be optimistic and use the best that we have today, and preserve our historical knowledge of scientific ascent in more primitive print media, just in case.<\/p>\n<h2>Continuing the discussion of python<\/h2>\n<p>First, let us explore some of the properties of the python programming language by using in its most basic form. Initialize interactive python containing matplot libraries with the command,<\/p>\n<p>python --pylab<\/p>\n<p>Next at the prompt In [1]: type an addition statement<\/p>\n<p>In [1]: 3+2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>and hit return. The computer instantly responds as follows:<\/p>\n<p>Out[1]: 5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>Next, try a fraction,<\/p>\n<p>In [2]: 3\/2<br \/>\nOut[2]: 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ,<\/p>\n<p>but wait(<strong>!?<\/strong>), we know that this is not the answer that we would expect. That is because the computer sees the quotient of two integers, and gives the correct answer that the result is the integer, 1 \u00a0 . So how do we inform the python interpreter that the above is not a quotient of two integers? The simplest way is to put decimal points after each number, as follows:<\/p>\n<p>In [3]: 3.\/2.<br \/>\nOut[3]: 1.5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>Now let us define a string variable,<\/p>\n<p>In [4]: aa='Hi there!'<br \/>\nNext, print it out by simply naming it and hitting return,<\/p>\n<p>In [5]: aa<br \/>\nOut[5]: 'Hi there!'<\/p>\n<p>How simple and intuitive is all this?<\/p>\n<p>We can define an array by a simple command,<\/p>\n<p>In [6]: b=[1, 2, 3]<\/p>\n<p>and verify that that is what happened, as follows:<\/p>\n<p>In [7]: b<br \/>\nOut[7]: [1, 2, 3]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>Similarly, we can define a string array as follows:<\/p>\n<p>In [8]: cc=['a', 'b', 'c']<\/p>\n<p>In [9]: cc<br \/>\nOut[9]: ['a', 'b', 'c']\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>In verifying the mnemonic for pi we type it as a string array and get the following exchange:<\/p>\n<p>In [10]: qq=['how', 'I', 'need',\u00a0 'a', 'drink', 'alcoholic', 'of', 'course', 'after', 'the', 'heavy', 'chapIn [10]: qq=['how', 'I', 'need',\u00a0 'a', 'drink', 'alcoholic', 'of', 'course', 'after', 'the', 'heavy', 'chapters', 'involving', 'quantum', 'mechanics', 'end']<br \/>\nIn [11]:qq<br \/>\nOut[11]:<br \/>\n['how',<br \/>\n'I',<br \/>\n'need',<br \/>\n'a',<br \/>\n'drink',<br \/>\n'alcoholic',<br \/>\n'of',<br \/>\n'course',<br \/>\n'after',<br \/>\n'the',<br \/>\n'heavy',<br \/>\n'chapters',<br \/>\n'involving',<br \/>\n'quantum',<br \/>\n'mechanics',<br \/>\n'end']\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>Note that I added 'end' as a last string, instead of a period. Also, the strings are separated by commas, which cannot be included in the quotes, which is the logical choice that prompts me to reverse the ancient typesetter's quirky conventions.<\/p>\n<p>It is easy to count the number of characters in a string in python by applying the built in function, len, as follows:<\/p>\n<p>In [12]: len('alcoholic')<br \/>\nOut[12]: 9\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>A quick way to count characters of the various string elements is by applying the length operator, <em>len<\/em>, to each element. We could apply a loop to do this task, but a faster way is to use the built-in <em>map<\/em> operator, which acts as follows:<\/p>\n<p>nq=map(len, qq)<\/p>\n<p>nq prints out as [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3]<\/p>\n<p>All this is redundant in python for getting pi, because you can get it directly by the simple command,<\/p>\n<p>In [13]: pi<br \/>\nOut[13]: 3.141592653589793<\/p>\n<p>Notice how python has undercut so many memory short cuts and mnemonics?<\/p>\n<p><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$0:0\">A pretty good approximation for pi in any language, in case you are using a programming language that does not have it built in is the evaluation of a fraction formed from the double sequence of successive, odd numbers, 113355, which is <\/span><\/span><\/span><\/p>\n<p><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$0:0\">In [14]: 355.\/113.<br \/>\nOut[14]: 3.1415929203539825\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><\/span><\/span><\/p>\n<p><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$4:0\">NB, <\/span><\/span><\/span><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$4:0\">the following sequence shows that the error of the above fraction is small:<\/span><\/span><\/span><\/p>\n<p>In [15]: (355.\/113.-pi)\/pi<br \/>\nOut[15]: 8.49136787674061e-08<\/p>\n<p><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$4:0\">(355.\/113.-pi)\/pi\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><\/span><\/span><\/p>\n<p><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$4:0\">Python as a language is disarmingly simple, but a very powerful object oriented language. I use it together with the matlab library to generate all the figures for my blog on ghyzmo.com, where I also pass along<\/span><\/span><\/span><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$4:0\"> the code<\/span><\/span><\/span><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777606298941043:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$4:0\"> in case someone wants to verify the figures on their own computers. To do this they must of course, have the proper python software and Matplotlib loaded, as above.<\/span><\/span><\/span><\/p>\n<h2><em><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$0:0\">Complex variables in python<\/span><\/span><\/span><\/em><\/h2>\n<p><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$0:0\">Python supports complex variables, but not in the traditional math notation, which is as follows<\/span><\/span><\/span><br \/>\n<span style=\"font-family: Symbol;\"><span style=\"font-family: Times new roman,serif;\">C=R+i I<\/span><sub><span style=\"font-family: Times new roman,serif;\">m<\/span><\/sub><\/span> <span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$0:0\">,<\/span><\/span><\/span><\/p>\n<p><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$0:0\">where R is the real part and <\/span><\/span><\/span><span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body\"><span class=\"UFICommentBody\" data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0\"><span data-reactid=\".13.1:3:1:$comment777499995618340_777816385586701:0.0.$right.0.$left.0.0.0:$comment-body.0.$end:0:$0:0\"><span style=\"font-family: Symbol;\"><span style=\"font-family: Times new roman,serif;\">I<\/span><sub><span style=\"font-family: Times new roman,serif;\">m<\/span><\/sub><\/span> is the pure imaginary part; however, in python notation is<\/span><\/span><\/span><\/p>\n<p><span style=\"font-family: Symbol;\"><span style=\"font-family: Times new roman,serif;\">C=R+1j * I<\/span><sub><span style=\"font-family: Times new roman,serif;\">m<\/span><\/sub><\/span> ,<\/p>\n<p>where R and<span style=\"font-family: Symbol;\"><span style=\"font-family: Times new roman,serif;\"> I<\/span><sub><span style=\"font-family: Times new roman,serif;\">m<\/span><\/sub><\/span> have assigned numerical values and 1j represents the square root of -1.<\/p>\n<p>NB, there is a symbolic extension of python under development, called <a href=\"http:\/\/sympy.org\/en\/index.html\">SymPy<\/a>, which I have yet to explore. If I a do, I may report back about it on Ghyzmo.<\/p>\n<p>Let me give you some examples that use complex notation in python.<\/p>\n<p>Define a complex number and find its complex conjugate in the following sequence:<\/p>\n<p>In [16]: c=3+4j<\/p>\n<p>In [17]: conjugate(c)<br \/>\nOut[17]: (3-4j)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>Now the product of a complex number with its complex conjugate results in its a\u00a0 real number, which represents the square of its amplitude:<\/p>\n<p>In [18]: c*conjugate(c)<br \/>\nOut[18]: (25+0j)<\/p>\n<p>We recognize the above as the correct result because<\/p>\n<p><span style=\"font-family: Symbol;\"><span style=\"font-family: Times new roman,serif;\">3<\/span><sup><span style=\"font-family: Times new roman,serif;\">2<\/span><\/sup><span style=\"font-family: Times new roman,serif;\">+4<\/span><sup><span style=\"font-family: Times new roman,serif;\">2<\/span><\/sup><span style=\"font-family: Times new roman,serif;\">=5<\/span><sup><span style=\"font-family: Times new roman,serif;\">2<\/span><\/sup><\/span><\/p>\n<p>and the imaginary part is zero, indicating a real number.<\/p>\n<p class=\"entry-title\">\u00a0In the blog\u00a0 \"A beautiful Math Maze\"<\/p>\n<p>\u00a0 we presented what some mathematicians consider the most beautiful equation <a href=\"http:\/\/en.wikipedia.org\/wiki\/Euler%27s_identity\">, Euler's identity<\/a>,<\/p>\n<p>e<sup>i\u03c0<\/sup>+1=0.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (ABMM.17)<\/p>\n<p>Since python has all the the above functions, let us see if python verifies the above through the following exchange:<\/p>\n<p>In [19]: exp(pi*1J)+1<br \/>\nOut[19]: 1.2246063538223773e-16j\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/p>\n<p>You might wonder why the result is not exactly zero as the theory would indicate; but remember that python works to within a certain number of decimal places. It is not an infinite precision engine. The above result, which is pure imaginary, represents the difference of two complex numbers that each are very close to the order 1. The error is in the imaginary part somewhere around the 16th decimal place, which is a PD Good approximation.<\/p>\n<h2>Conclusion<\/h2>\n<p>The point in the above discussion is to show how one can use a sophisticated modern language in such a way that we can explore pure math with a device that is constructed to conform to the principles and logic of math. A secondary point was to give absolute newbies a primer in using python. The rest they can fill in by looking python up with a good search engine.<\/p>\n<p>Ciao, buona fortuna.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a9Fernando Caracena 2014 In a previous blog, \"A beautiful Math Maze\", I used python to explore various ideas in pure mathematics. The idea is that programming languages are math machines that contain within them the accumulated experience and knowledge of &hellip; <a href=\"http:\/\/www.ghyzmo.com\/hacking-math-i-math-precision-of-python\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1224","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/posts\/1224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/comments?post=1224"}],"version-history":[{"count":13,"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/posts\/1224\/revisions"}],"predecessor-version":[{"id":1235,"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/posts\/1224\/revisions\/1235"}],"wp:attachment":[{"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/media?parent=1224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/categories?post=1224"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.ghyzmo.com\/wp-json\/wp\/v2\/tags?post=1224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}