{"id":744,"date":"2013-08-19T12:00:23","date_gmt":"2013-08-19T17:00:23","guid":{"rendered":"https:\/\/blogs.mathworks.com\/cleve\/?p=744"},"modified":"2016-05-24T09:00:12","modified_gmt":"2016-05-24T14:00:12","slug":"backslash","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/cleve\/2013\/08\/19\/backslash\/","title":{"rendered":"Backslash"},"content":{"rendered":"<div class=\"content\"><!--introduction--><p>The backslash operator has come to represent both the matrix origins and the usability of MATLAB.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/images\/cleve\/shirt.jpg\" alt=\"\"> <\/p><!--\/introduction--><h3>Contents<\/h3><div><ul><li><a href=\"#f59b9bfa-8bb3-49e9-9040-44031e412ce0\">T-shirts<\/a><\/li><li><a href=\"#40354295-076d-4747-a7f0-86cbee04f583\">Father of ASCII<\/a><\/li><li><a href=\"#196b5d39-f76f-481b-8739-d0a816ab1a76\">BCD and EBCDIC<\/a><\/li><li><a href=\"#c72a40f7-2106-4a25-b442-113dbfda1f05\">Choosing backslash<\/a><\/li><li><a href=\"#14c54131-d755-4338-859a-0335005e0d96\">Kurt Hensel, 1928<\/a><\/li><li><a href=\"#bd62c49c-e0ee-4981-964c-02dd76f1a7ac\">19th Century notation<\/a><\/li><li><a href=\"#e5cdadba-18df-420d-8275-db239584585f\">Acknowledgement<\/a><\/li><li><a href=\"#2faa42ff-da7e-452f-8fb3-d0ed109a54ff\">Further Reading<\/a><\/li><\/ul><\/div><h4>T-shirts<a name=\"f59b9bfa-8bb3-49e9-9040-44031e412ce0\"><\/a><\/h4><p>At the recent SIAM Annual Meeting in San Diego we offered T-shirts at the MathWorks booth that featured the iconic MATLAB statement<\/p><p><tt>x = A\\b;<\/tt><\/p><p>They prompted a friend to ask me \"When you were developing MATLAB, how did you come to choose the backslash character for the solution of linear equations.\" The answer takes us back to the beginnings because solving linear equations is certainly the first nontrivial operation MATLAB had to be able to do.<\/p><h4>Father of ASCII<a name=\"40354295-076d-4747-a7f0-86cbee04f583\"><\/a><\/h4><p>Robert W. (Bob) Bemer was an early computer pioneer at Rand Corporation and at IBM who was a prominent participant in industry standards committees. Among his many accomplishments, he was one of the first people to propose an approach to the Y2K problem. His 1960 design of the character set for the IBM STRETCH computer included the backslash, as well as curly braces and square brackets.  He later added the escape character.<\/p><p>Bemer was an advocate of the backslash character because it could be combined with the forward slash to form the logic operators <tt>\/\\<\/tt> and <tt>\\\/<\/tt>, which were part of the ALGOL 60 programming language.  In the early 1960s, Bemer was instrumental in having backslash, as well as the braces, brackets, and escape, included in the American Standard Code for Information Interchange character set.  That's ASCII for short and is, of course, is the character set that all computers use today.<\/p><p>When Bemer proposed backslash to the ASCII committee, there was not immediate acceptance.  But he says, \"So I asked for a character more important to have.  After much discussion they could not agree on a better candidate.\"<\/p><h4>BCD and EBCDIC<a name=\"196b5d39-f76f-481b-8739-d0a816ab1a76\"><\/a><\/h4><p>It took more than a decade for the ASCII character set to be universally adopted.  In the mid to late 1970s we still had to deal with computers and computer terminals that had different character sets.  Many central main frames had operating systems with 6-bit character sets and so could not handle both upper and lower case.  Different machines had different sets of special characters.<\/p><p>The IBM main frames at Argonne National Laboratory, where we were working on EISPACK and LINPACK, initially had a 6-bit, upper case only character set called BCD, for Binary Coded Decimal.  New machines brought with them 8-bit EBCDIC, which had upper and lower case and was a kind of transition from BCD to ASCII.  Other big machines from other manufacturers, at other national laboratories and at university computer centers, had other operating systems and other character sets.  It was a veritable zoo.<\/p><h4>Choosing backslash<a name=\"c72a40f7-2106-4a25-b442-113dbfda1f05\"><\/a><\/h4><p>But, perhaps surprisingly, all these systems happened to have one thing in common -- they all included backslash among their collection of special characters.  Thinking about it now as I write this blog, I can only surmise that it was because of Bob Bemer and in anticipation of the emerging ASCII standard.<\/p><p>Since matrix multiplication is not commutative, solving the linear system $Ax = b$ is not the same thing as solving $xA = b$.  I needed two different symbols for the two different solution operations.  You can think of the process as like dividing by $A$, so it was just natural to choose the backward slash and the forward slash for the two symbols.  This gives us the two different MATLAB statements<\/p><p><tt>x = A\\b;<\/tt><\/p><p><tt>x = b\/A;<\/tt><\/p><p>The first of these is by far the more important.<\/p><h4>Kurt Hensel, 1928<a name=\"14c54131-d755-4338-859a-0335005e0d96\"><\/a><\/h4><p>Nick Higham somehow found a paper written in 1928 by a famous German mathematician, Kurt Hensel, \"Uber den Zusammenhang zwischen den Systemen und ihren Determinanten\".  Hensel introduces the backslash notation for the solution of a system of simultaneous linear equations in the same way we have, in fact with the same letters, $A$, $X$, and $B$.  He then uses the notation once on the fourth page of the paper and never again.  As the title indicates, most of the paper is about determinants.<\/p><p>As far as we know, no one else used backslash in this way until I did fifty years later.<\/p><h4>19th Century notation<a name=\"bd62c49c-e0ee-4981-964c-02dd76f1a7ac\"><\/a><\/h4><p>Nick also describes notation devised in the 19th century, before matrices were called matrices.  Nick found that Arthur Cayley suggested<\/p><p>$$ \\frac{B |}{| A} \\ \\ \\mbox{and} \\ \\ \\frac{| B}{A |} $$<\/p><p>for $BA^{-1}$ and $A^{-1}B$ in the context of groups. Fortunately, this notation did not catch on.<\/p><h4>Acknowledgement<a name=\"e5cdadba-18df-420d-8275-db239584585f\"><\/a><\/h4><p>Thanks to Nick Higham for help with this week's post.<\/p><h4>Further Reading<a name=\"2faa42ff-da7e-452f-8fb3-d0ed109a54ff\"><\/a><\/h4><p>R. M. Bemer, \"How ASCII Got Its Backslash\"<\/p><p>K. Hensel, \"Uber den Zusammenhang zwischen den Systemen und ihren Determinanten\", Journal fur die reine und angewandte Mathematik (Crelle's Journal).  1928, volume 159, Pages 246-254. <a href=\"http:\/\/resolver.sub.uni-goettingen.de\/purl?PPN243919689_0159\/dmdlog27\">&lt;http:\/\/resolver.sub.uni-goettingen.de\/purl?PPN243919689_0159\/dmdlog27<\/a>&gt;<\/p><p>N. J. Higham, \"Cayley, Sylvester, and early matrix theory\", Linear Algebra Appl., 428:39-43, 2008. <a href=\"http:\/\/eprints.ma.man.ac.uk\/954\/01\/covered\/MIMS_ep2007_119.pdf\">&lt;http:\/\/eprints.ma.man.ac.uk\/954\/01\/covered\/MIMS_ep2007_119.pdf<\/a>&gt;<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_094dfdebc4aa43158f7d2cd2a8716870() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='094dfdebc4aa43158f7d2cd2a8716870 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 094dfdebc4aa43158f7d2cd2a8716870';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2013 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_094dfdebc4aa43158f7d2cd2a8716870()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2013b<br><\/p><p class=\"footer\"><br>\r\n      Published with MATLAB&reg; R2013b<br><\/p><\/div><!--\r\n094dfdebc4aa43158f7d2cd2a8716870 ##### SOURCE BEGIN #####\r\n%% Backslash \r\n% The backslash operator has come to represent both the matrix origins\r\n% and the usability of MATLAB. \r\n%\r\n% <<shirt.jpg>>\r\n%\r\n\r\n%% T-shirts\r\n% At the recent SIAM Annual Meeting in San Diego we offered T-shirts at\r\n% the MathWorks booth that featured the iconic MATLAB statement\r\n%\r\n% |x = A\\b;|\r\n%\r\n\r\n%%\r\n% They prompted a friend to ask me \"When you were developing MATLAB,\r\n% how did you come to choose the backslash character for the solution of\r\n% linear equations.\"\r\n% The answer takes us back to the beginnings because solving\r\n% linear equations is certainly the first nontrivial operation MATLAB\r\n% had to be able to do. \r\n\r\n%% Father of ASCII\r\n% Robert W. (Bob) Bemer was an early computer pioneer at Rand Corporation and\r\n% at IBM who was a prominent participant in industry standards committees.\r\n% Among his many accomplishments, he was one of the first\r\n% people to propose an approach to the Y2K problem.\r\n% His 1960 design of the character set for the IBM STRETCH computer included\r\n% the backslash, as well as curly braces and square brackets.  He later\r\n% added the escape character.\r\n\r\n%%\r\n% Bemer was an advocate of the backslash character because it could be \r\n% combined with the forward slash to form the logic operators |\/\\| and |\\\/|,\r\n% which were part of the ALGOL 60 programming language.  In the early 1960s,\r\n% Bemer was instrumental in having backslash, as well as the braces, brackets,\r\n% and escape, included in the American Standard Code for Information\r\n% Interchange character set.  That's ASCII for short and is, of course,\r\n% is the character set that all computers use today.\r\n\r\n%%\r\n% When Bemer proposed backslash to the ASCII committee, there was not\r\n% immediate acceptance.  But he says, \"So I asked for a character more important\r\n% to have.  After much discussion they could not agree on a better candidate.\"\r\n\r\n%% BCD and EBCDIC\r\n% It took more than a decade for the ASCII character set to be universally\r\n% adopted.  In the mid to late 1970s we still had to deal with computers and\r\n% computer terminals that had different character sets.  Many central main\r\n% frames had operating systems with 6-bit character sets and so could not\r\n% handle both upper and lower case.  Different machines had different sets\r\n% of special characters.\r\n\r\n%% \r\n% The IBM main frames at Argonne National Laboratory, where we were working\r\n% on EISPACK and LINPACK, initially had a 6-bit, upper case only character\r\n% set called BCD, for Binary Coded Decimal.  New machines brought with them\r\n% 8-bit EBCDIC, which had upper and lower case and was a kind of transition\r\n% from BCD to ASCII.  Other big machines from other manufacturers,\r\n% at other national laboratories and at university computer centers,\r\n% had other operating systems and other character sets.  It was a veritable\r\n% zoo.\r\n\r\n%% Choosing backslash\r\n% But, perhaps surprisingly, all these systems happened to have one\r\n% thing in common REPLACE_WITH_DASH_DASH they all included backslash among their collection of\r\n% special characters.  Thinking about it now as I write this blog,\r\n% I can only surmise that it was because of Bob Bemer and in anticipation\r\n% of the emerging ASCII standard.\r\n\r\n%%\r\n% Since matrix multiplication is not commutative, solving the linear system\r\n% $Ax = b$ is not the same thing as solving $xA = b$.  I needed two different\r\n% symbols for the two different solution operations.  You can think of the\r\n% process as like dividing by $A$, so it was just natural to choose\r\n% the backward slash and the forward slash for the two symbols.  This gives\r\n% us the two different MATLAB statements\r\n%\r\n% |x = A\\b;|\r\n%\r\n% |x = b\/A;|\r\n%\r\n% The first of these is by far the more important.\r\n\r\n%% Kurt Hensel, 1928\r\n% Nick Higham somehow found a paper written in 1928 by a famous German\r\n% mathematician, Kurt Hensel, \"Uber den Zusammenhang zwischen den Systemen und\r\n% ihren Determinanten\".  Hensel introduces the backslash notation for the\r\n% solution of a system of simultaneous linear equations in the same way we\r\n% have, in fact with the same letters, $A$, $X$, and $B$.  He then uses the\r\n% notation once on the fourth page of the paper and never again.  As the\r\n% title indicates, most of the paper is about determinants.\r\n\r\n%%\r\n% As far as we know, no one else used backslash in this way until I did\r\n% fifty years later.\r\n\r\n%% 19th Century notation\r\n% Nick also describes notation devised in the 19th century, before\r\n% matrices were called matrices.  Nick found that Arthur Cayley suggested\r\n%\r\n% $$ \\frac{B |}{| A} \\ \\ \\mbox{and} \\ \\ \\frac{| B}{A |} $$ \r\n%   \r\n% for $BA^{-1}$ and $A^{-1}B$ in the context of groups.\r\n% Fortunately, this notation did not catch on.\r\n\r\n%% Acknowledgement\r\n% Thanks to Nick Higham for help with this week's post.\r\n\r\n%% Further Reading\r\n% R. M. Bemer,\r\n% \"How ASCII Got Its Backslash\",\r\n% <http:\/\/www.trailing-edge.com\/~bobbemer\/BACSLASH.HTM \r\n% http:\/\/www.trailing-edge.com\/~bobbemer\/BACSLASH.HTM> \r\n\r\n%%\r\n% K. Hensel, \"Uber den Zusammenhang zwischen den Systemen und ihren\r\n% Determinanten\", Journal fur die reine und angewandte Mathematik (Crelle's\r\n% Journal).  1928, volume 159, Pages 246-254.\r\n% <http:\/\/resolver.sub.uni-goettingen.de\/purl?PPN243919689_0159\/dmdlog27\r\n% http:\/\/resolver.sub.uni-goettingen.de\/purl?PPN243919689_0159\/dmdlog27>\r\n\r\n%%\r\n% N. J. Higham, \"Cayley, Sylvester, and early matrix theory\",\r\n% Linear Algebra Appl., 428:39-43, 2008.\r\n% <http:\/\/eprints.ma.man.ac.uk\/954\/01\/covered\/MIMS_ep2007_119.pdf\r\n% http:\/\/eprints.ma.man.ac.uk\/954\/01\/covered\/MIMS_ep2007_119.pdf>\r\n\r\n##### SOURCE END ##### 094dfdebc4aa43158f7d2cd2a8716870\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"https:\/\/blogs.mathworks.com\/images\/cleve\/shirt.jpg\" onError=\"this.style.display ='none';\" \/><\/div><!--introduction--><p>The backslash operator has come to represent both the matrix origins and the usability of MATLAB.... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/cleve\/2013\/08\/19\/backslash\/\">read more >><\/a><\/p>","protected":false},"author":78,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,6],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/744"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/comments?post=744"}],"version-history":[{"count":12,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/744\/revisions"}],"predecessor-version":[{"id":1707,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/744\/revisions\/1707"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media?parent=744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/categories?post=744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/tags?post=744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}