In the 7th century, Indian mathematician Brahmagupta gave the first explanation of the Hindu-Arabic numeral system and the use of zero as both a placeholder and a decimal digit. Approximately around the year 825, Persian mathematician Al-Khwarizmi wrote a book, On the Calculation with Hindu Numerals, that was principally responsible for the diffusion of the Indian system of numeration in the Middle East and then Europe. Around the 12th century, there was translation of this book written into Latin: Algoritmi de numero Indorum. These books presented newer concepts to perform a series of steps in order to accomplish a task such as the systematic application of arithmetic to algebra. By derivation from his name, we have the term algorithm. Around the 3rd century BCE, Indian mathematician Pingala invented the binary numeral system. In this system, still used today to process all modern computers, a sequence of ones and zeros can represent any number. In 1703, Gottfried Leibniz developed logic in a formal, mathematical sense with his writings on the binary numeral system. In his system, the ones and zeros also represent true and false values or on and off states. But it took more than a century before George Boole published his boolean algebra in 1854 with a complete system that allowed computational processes to be mathematically modelled. By this time, the first mechanical devices driven by a binary pattern had been invented. The industrial revolution had driven forward the mechanization of many tasks, and this included weaving. Punch cards controlled Joseph Marie Jacquard's loom in 1801, where a hole punched in the card indicated a binary one and an unpunched spot indicated a binary zero. Jacquard's loom was far from being a computer, but it did illustrate that machines could be driven by binary systems.