Describes the math::exact module in Tcllib, which performs exact calculations over the computable reals. Numbers are represented as objects that contain programs to define the number by successive approximations.
This document discusses several Python peculiarities and quirks through examples of code snippets. Some key points covered include:
- Importing * can override expected values
- Default arguments are evaluated once at compile time
- Built-in functions like str behave differently on integers vs other objects
- Special modules and future imports can enable unusual syntax as easter eggs
- Implicit variables like _ can cause unexpected behavior
- Indexing issues can arise from iterating over lists in certain ways
The examples serve to illustrate subtle behaviors in Python and emphasize writing clear and intentional code over clever tricks that may confuse others or cause bugs. Readability, commenting, and avoiding imports of all symbols are suggested.
Presented at DevWeek (25th March 2015)
These days, testing is considered a sexy topic for programmers. Who’d have thought it? But what makes for good unit tests (GUTs)? There’s more to effective unit testing than just knowing the assertion syntax of a testing framework.
Testing represents a form of communication and, as such, it offers multiple levels and forms of feedback, not just basic defect detection. Effective unit testing requires an understanding of what forms of feedback and communication are offered by tests, and what styles encourage or discourage such qualities.
What style of test partitioning is most common, and yet scales poorly and is ineffective at properly expressing the behaviour of a class or component? What styles, tricks and tips can be used to make tests more specification-like and can scale as the codebase grows?
This session will address these questions and outline exactly what makes a good unit test.
Presented at ACCU Oxford (14th September 2015)
Functional C++? As opposed to what — dysfunctional? Well, kind of, yeah. Sure, in C++ the principal unit of composition is called a function, but that doesn't mean it's a functional language. And the idea of restricting mutability of state gets a nod with const, but it's a nod not a hug. And the STL shows influences of functional programming, although it falls short of being compositional. And, yes, sure, C++11 has lambdas, but then again, these days, who doesn't? Lambda calculus was invented in the 1930s.
This talk looks at how to express functional programming ideas in (post)modern C++ in a way that can be considered idiomatic to C++, rather than trying to use the power of overloading and meta-programming to pretend C++ is Haskell or Lisp. In short, immutability beyond const and into shared and persistent data structures, concurrency beyond threading and locks, and thinking about functions as transformations and units of composition rather than actions.
This document provides an overview of the Ruby programming language. Some key points:
- Ruby was created by Yukihiro Matsumoto and first released publicly in 2005.
- Everything in Ruby is an object, allowing for powerful iteration capabilities. Common iteration methods include each, upto, and times.
- Ruby uses case/when for conditional logic similar to switch statements in other languages. Regular expressions and ranges can be used in when clauses.
- Arrays are a fundamental data structure in Ruby. Common array methods demonstrated include at, <<, unshift, compact, and indexing with negative numbers. Multidimensional arrays are possible by nesting arrays.
This document provides an introduction to Python for high school programmers. It covers background information on Python, key concepts like data types and operators, and basics of the language like variables, collections, control flow, and object-oriented programming. Code examples are included to demonstrate various features. The presentation aims to get students started with Python and provide an overview of what it can do.
This talk was part tongue in cheek, part serious, but entirely fun and given twice as a lightning talk - once at Europython & once at the ACCU python uk 05. It presents a generic python like language parser which does actually work. Think of it as an alternative to brackets in Lisp!
This document provides information about CS50 including:
- Instructions to view the projector feed or post questions online if uncomfortable asking in lecture.
- Announcement that Problem Set 3 is due on October 4th and will be posted that evening.
- Code snippets and explanations of compiling, preprocessing, assembling, and linking.
- Names and brief descriptions of CS50 libraries and functions like get_string(), printf(), and main().
elrang, a general-purpose, concurrent, functional programming language. (https://en.wikipedia.org/wiki/Erlang_(programming_language)
this slide describe the language, based on this book.
learn you some erlang - (http://learnyousomeerlang.com/)
this slide covers -
chapter 0 (introduction)
chapter 1 (startingout)
chapter 2 (modules)
This document discusses several Python peculiarities and quirks through examples of code snippets. Some key points covered include:
- Importing * can override expected values
- Default arguments are evaluated once at compile time
- Built-in functions like str behave differently on integers vs other objects
- Special modules and future imports can enable unusual syntax as easter eggs
- Implicit variables like _ can cause unexpected behavior
- Indexing issues can arise from iterating over lists in certain ways
The examples serve to illustrate subtle behaviors in Python and emphasize writing clear and intentional code over clever tricks that may confuse others or cause bugs. Readability, commenting, and avoiding imports of all symbols are suggested.
Presented at DevWeek (25th March 2015)
These days, testing is considered a sexy topic for programmers. Who’d have thought it? But what makes for good unit tests (GUTs)? There’s more to effective unit testing than just knowing the assertion syntax of a testing framework.
Testing represents a form of communication and, as such, it offers multiple levels and forms of feedback, not just basic defect detection. Effective unit testing requires an understanding of what forms of feedback and communication are offered by tests, and what styles encourage or discourage such qualities.
What style of test partitioning is most common, and yet scales poorly and is ineffective at properly expressing the behaviour of a class or component? What styles, tricks and tips can be used to make tests more specification-like and can scale as the codebase grows?
This session will address these questions and outline exactly what makes a good unit test.
Presented at ACCU Oxford (14th September 2015)
Functional C++? As opposed to what — dysfunctional? Well, kind of, yeah. Sure, in C++ the principal unit of composition is called a function, but that doesn't mean it's a functional language. And the idea of restricting mutability of state gets a nod with const, but it's a nod not a hug. And the STL shows influences of functional programming, although it falls short of being compositional. And, yes, sure, C++11 has lambdas, but then again, these days, who doesn't? Lambda calculus was invented in the 1930s.
This talk looks at how to express functional programming ideas in (post)modern C++ in a way that can be considered idiomatic to C++, rather than trying to use the power of overloading and meta-programming to pretend C++ is Haskell or Lisp. In short, immutability beyond const and into shared and persistent data structures, concurrency beyond threading and locks, and thinking about functions as transformations and units of composition rather than actions.
This document provides an overview of the Ruby programming language. Some key points:
- Ruby was created by Yukihiro Matsumoto and first released publicly in 2005.
- Everything in Ruby is an object, allowing for powerful iteration capabilities. Common iteration methods include each, upto, and times.
- Ruby uses case/when for conditional logic similar to switch statements in other languages. Regular expressions and ranges can be used in when clauses.
- Arrays are a fundamental data structure in Ruby. Common array methods demonstrated include at, <<, unshift, compact, and indexing with negative numbers. Multidimensional arrays are possible by nesting arrays.
This document provides an introduction to Python for high school programmers. It covers background information on Python, key concepts like data types and operators, and basics of the language like variables, collections, control flow, and object-oriented programming. Code examples are included to demonstrate various features. The presentation aims to get students started with Python and provide an overview of what it can do.
This talk was part tongue in cheek, part serious, but entirely fun and given twice as a lightning talk - once at Europython & once at the ACCU python uk 05. It presents a generic python like language parser which does actually work. Think of it as an alternative to brackets in Lisp!
This document provides information about CS50 including:
- Instructions to view the projector feed or post questions online if uncomfortable asking in lecture.
- Announcement that Problem Set 3 is due on October 4th and will be posted that evening.
- Code snippets and explanations of compiling, preprocessing, assembling, and linking.
- Names and brief descriptions of CS50 libraries and functions like get_string(), printf(), and main().
elrang, a general-purpose, concurrent, functional programming language. (https://en.wikipedia.org/wiki/Erlang_(programming_language)
this slide describe the language, based on this book.
learn you some erlang - (http://learnyousomeerlang.com/)
this slide covers -
chapter 0 (introduction)
chapter 1 (startingout)
chapter 2 (modules)
One criticism of opponents of Perl is that it is a "write-only" language meaning that once the code is written, it is extremely difficult to maintain because it is difficult to understand upon re-examination. As with many criticisms, this should be aimed at those undisciplined developers who are writing the code, and not their tool of choice.
Having said that, I think it is also fair to say that Perl makes it very easy to write difficult-to-decipher code. This is the doubleedged sword which is the shorthand Perl gives us to be very expressive in a small amount of space. A negative application of this is obfuscated Perl (where the author intentionally makes his code difficult to read), while a more positive application is the craft of creating Perl "oneliners" (trying to include a great deal of functionality in a single line of code). A oneliner can be a powerful weapon in the arsenal of a system administrator.
In this talk:
* We'll look at a line of code in a subroutine that is in desperate need of readability changes
* We'll make the code more readable by introducing:
* appropriate whitespace
* different ways of writing the same thing, for example: $array[$#array] vs. $array[-1]
* useful names for variables, versus $index, $j $k $l, etc
* breaking up one line of code into multiple lines
* exploring further improvements through Perl::Critic and by extension Perl::Tidy
This talk will be beginner-friendly.
This document provides a summary of C# and .NET core concepts including:
1. Data types and their sizes in C# including primitive types like int, string, bool as well as arrays and array operations.
2. Methods for string operations in C# like Compare, IndexOf, Replace, Split, ToCharArray.
3. Formatting numeric values and dates using standard and custom formats in C#.
There are a lot of operators in Perl 6, so many that it can be called an OOL: operator oriented language. Here I describe most of them from the angle of contexts, which Perl 6 has also much more than Perl 5.
The document discusses various control structures in C++ programming including if/else statements, while loops, do/while loops, and for loops. It provides code examples of each control structure and the output of executing the code. It also demonstrates the use of break and continue statements within loops.
This document provides an overview and introduction to NumPy, a fundamental package for scientific computing in Python. It discusses NumPy's core capabilities like N-dimensional arrays and universal functions for fast element-wise operations. The document also briefly introduces SciPy which builds upon NumPy and provides many scientific algorithms. Finally, it demonstrates basic NumPy operations like creating arrays, slicing, indexing, and plotting to visualize data.
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5 b...ssuserd6b1fd
C programming language notes for beginners and Collage students. Written for beginners. Colored graphics. Function by Function explanation with complete examples. Well commented examples. Illustrations are made available for data dealing at memory level.
- Pointers are a powerful feature in C++ that allow dynamic memory allocation but are difficult to master.
- A pointer variable stores the address of a memory location rather than its data value.
- Pointer variables must be initialized before their value (what they point to) can be accessed, otherwise it will cause runtime errors.
The document discusses various topics related to logging and concurrency in .NET applications. It begins with examples of race conditions that can occur with logging and demonstrates a logging mechanism that uses TPL Dataflow to introduce thread-safety. It also discusses creating a safe logger interface and implementation using an ActionBlock to process log data on multiple threads safely.
Graph databases come with enhanced connectivity of data and whiteboard friendly paradigm. It requires learning a new Graph Traversal Language, that crawls the network and brings informations. It's indeed a fresh new look at how we store web of data and search for it. We'll meet gremlin, from Apache TinkerPop, which provides an abstract layer that make it easy to express your business logic without fighting with the code, and several Open Source graph databases, available for testing and toying.
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Kevlin Henney
Presented at code::dive (2016-11-15)
Video available at https://www.youtube.com/watch?v=brfqm9k6qzc
It is all to easy to dismiss problematic codebases on some nebulous idea of bad practice or bad programmers. Poor code, however, is rarely arbitrary and random in its structure or formulation. Systems of code, well or poorly structured, emerge from systems of practice, whether effective or ineffective. To improve code quality, it makes more sense to pick apart the specific practices and see their interplay — the cause — than to simply focus on the code itself — the effect. This talk looks at how a handful of coding habits, design practices and assumptions can systematically balloon code and compound its accidental complexity.
The document describes the initialization of a graphical user interface (GUI) for a harmonicograph application using the Wx::Perl toolkit. It loads localization text, remembered favorites, and default parameter ranges. It then creates widgets like sliders, buttons and a drawing board and arranges them in a tabbed layout within a main frame window. The frame is populated with the widgets and initialized parameter values before being displayed.
Moore's Law may be dead, but CPUs acquire more cores every year. If you want to minimize response latency in your application, you need to use every last core - without wasting resources that would destroy performance and throughput. Traditional locks grind threads to a halt and are prone to deadlocks, and although actors provide a saner alternative, they compose poorly and are at best weakly-typed.
In this presentation, created exclusively for Scalar Conf, John reveals a new alternative to the horrors of traditional concurrency, directly comparing it to other leading approaches in Scala. Witness the beauty, simplicity, and power of declarative concurrency, as you discover how functional programming is the most practical solution to solving the tough challenges of concurrency.
A minimal fluff introduction to Haskell showing enough tools to build a command line application to singularize every word in multiple lines. First presented at the first meeting of the Atlanta Functional Programming Users Group
Presented at Foo Café (2019-03-21)
Video at https://www.youtube.com/watch?v=tLSKLLxrZyY
Programmers use coding katas to kick the tyres of their programming languages, paradigms and practices. Typically anchored in a TDD cycle, katas are simple problems that give programmers the opportunity to exercise deliberate practice and explore different approaches, whether programming style, pair programming or test-first programming.
But the simplicity can be deceptive, with many programmers tiring of these katas too soon, missing out on some of the more mind-bending and paradigm-expanding opportunities on offer.
This session will pick on a couple of katas and dig deeper into TDD, lambdas, language(s), (dys)functional programming and Alcubierre drive. It will present code in a variety of languages, highlight the weaknesses of some common mantras, play around with ideas — and blend code, humour and general nerdiness to be both an enjoyable and educational session.
Giordano Scalzo introduces himself as an iOS developer and provides a swift introduction to the Swift programming language. He demonstrates various Swift features through code examples, including functions, closures, classes, structs, enums, generics, and operator overloading. He also discusses unit testing support in Swift through XCTest and Quick. To conclude, he proposes coding a reverse polish notation calculator to demonstrate applying these Swift concepts.
This document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim motions and modes like Normal mode, Insert mode, and Visual mode to efficiently edit code. It also covers Vim features like syntax highlighting, custom syntax files, key mappings, and text objects that are useful for Perl. The document advocates that Vim is a powerful editor rather than an IDE and highlights how it can save significant time compared to less efficient editing methods.
This document provides code for backtesting a trading strategy using the quantstrat package in R. It loads relevant packages, defines parameters like the ticker ("SPY"), dates, and a trade size. Technical indicators like moving averages and RSI are calculated on SPY data. Signals are defined to generate buy/sell signals when indicators cross thresholds. Rules are added to enter/exit positions when signals occur. The strategy is applied using applyStrategy() and results are analyzed.
These are the slides I was using when delivering a short talk in Vienna PHP. The talk took place in Vienna on September 22th. More information about the PHP course I deliver can be found at php.course.lifemichael.com
In the ‘old’ days, when a circuit seemed to have a problem, one could look at each circuit to see if they could detect a bad circuit. Today, finding a bad chip is hard to due. Seeing a chip’s circuit may not be possible, how then can one determine a bad chip?
For example, in the 1970s, Memorex Corp. was designing their first “Thin Film Head” (TFH) and using micro chip components. It was soon realized that something was wrong with a small percent of its disc drives being made with these chips. But, how to detect or find the bad drives was not known. Destructive testing seemed like the only choice. Years went bye. No solution!
One criticism of opponents of Perl is that it is a "write-only" language meaning that once the code is written, it is extremely difficult to maintain because it is difficult to understand upon re-examination. As with many criticisms, this should be aimed at those undisciplined developers who are writing the code, and not their tool of choice.
Having said that, I think it is also fair to say that Perl makes it very easy to write difficult-to-decipher code. This is the doubleedged sword which is the shorthand Perl gives us to be very expressive in a small amount of space. A negative application of this is obfuscated Perl (where the author intentionally makes his code difficult to read), while a more positive application is the craft of creating Perl "oneliners" (trying to include a great deal of functionality in a single line of code). A oneliner can be a powerful weapon in the arsenal of a system administrator.
In this talk:
* We'll look at a line of code in a subroutine that is in desperate need of readability changes
* We'll make the code more readable by introducing:
* appropriate whitespace
* different ways of writing the same thing, for example: $array[$#array] vs. $array[-1]
* useful names for variables, versus $index, $j $k $l, etc
* breaking up one line of code into multiple lines
* exploring further improvements through Perl::Critic and by extension Perl::Tidy
This talk will be beginner-friendly.
This document provides a summary of C# and .NET core concepts including:
1. Data types and their sizes in C# including primitive types like int, string, bool as well as arrays and array operations.
2. Methods for string operations in C# like Compare, IndexOf, Replace, Split, ToCharArray.
3. Formatting numeric values and dates using standard and custom formats in C#.
There are a lot of operators in Perl 6, so many that it can be called an OOL: operator oriented language. Here I describe most of them from the angle of contexts, which Perl 6 has also much more than Perl 5.
The document discusses various control structures in C++ programming including if/else statements, while loops, do/while loops, and for loops. It provides code examples of each control structure and the output of executing the code. It also demonstrates the use of break and continue statements within loops.
This document provides an overview and introduction to NumPy, a fundamental package for scientific computing in Python. It discusses NumPy's core capabilities like N-dimensional arrays and universal functions for fast element-wise operations. The document also briefly introduces SciPy which builds upon NumPy and provides many scientific algorithms. Finally, it demonstrates basic NumPy operations like creating arrays, slicing, indexing, and plotting to visualize data.
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5 b...ssuserd6b1fd
C programming language notes for beginners and Collage students. Written for beginners. Colored graphics. Function by Function explanation with complete examples. Well commented examples. Illustrations are made available for data dealing at memory level.
- Pointers are a powerful feature in C++ that allow dynamic memory allocation but are difficult to master.
- A pointer variable stores the address of a memory location rather than its data value.
- Pointer variables must be initialized before their value (what they point to) can be accessed, otherwise it will cause runtime errors.
The document discusses various topics related to logging and concurrency in .NET applications. It begins with examples of race conditions that can occur with logging and demonstrates a logging mechanism that uses TPL Dataflow to introduce thread-safety. It also discusses creating a safe logger interface and implementation using an ActionBlock to process log data on multiple threads safely.
Graph databases come with enhanced connectivity of data and whiteboard friendly paradigm. It requires learning a new Graph Traversal Language, that crawls the network and brings informations. It's indeed a fresh new look at how we store web of data and search for it. We'll meet gremlin, from Apache TinkerPop, which provides an abstract layer that make it easy to express your business logic without fighting with the code, and several Open Source graph databases, available for testing and toying.
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Kevlin Henney
Presented at code::dive (2016-11-15)
Video available at https://www.youtube.com/watch?v=brfqm9k6qzc
It is all to easy to dismiss problematic codebases on some nebulous idea of bad practice or bad programmers. Poor code, however, is rarely arbitrary and random in its structure or formulation. Systems of code, well or poorly structured, emerge from systems of practice, whether effective or ineffective. To improve code quality, it makes more sense to pick apart the specific practices and see their interplay — the cause — than to simply focus on the code itself — the effect. This talk looks at how a handful of coding habits, design practices and assumptions can systematically balloon code and compound its accidental complexity.
The document describes the initialization of a graphical user interface (GUI) for a harmonicograph application using the Wx::Perl toolkit. It loads localization text, remembered favorites, and default parameter ranges. It then creates widgets like sliders, buttons and a drawing board and arranges them in a tabbed layout within a main frame window. The frame is populated with the widgets and initialized parameter values before being displayed.
Moore's Law may be dead, but CPUs acquire more cores every year. If you want to minimize response latency in your application, you need to use every last core - without wasting resources that would destroy performance and throughput. Traditional locks grind threads to a halt and are prone to deadlocks, and although actors provide a saner alternative, they compose poorly and are at best weakly-typed.
In this presentation, created exclusively for Scalar Conf, John reveals a new alternative to the horrors of traditional concurrency, directly comparing it to other leading approaches in Scala. Witness the beauty, simplicity, and power of declarative concurrency, as you discover how functional programming is the most practical solution to solving the tough challenges of concurrency.
A minimal fluff introduction to Haskell showing enough tools to build a command line application to singularize every word in multiple lines. First presented at the first meeting of the Atlanta Functional Programming Users Group
Presented at Foo Café (2019-03-21)
Video at https://www.youtube.com/watch?v=tLSKLLxrZyY
Programmers use coding katas to kick the tyres of their programming languages, paradigms and practices. Typically anchored in a TDD cycle, katas are simple problems that give programmers the opportunity to exercise deliberate practice and explore different approaches, whether programming style, pair programming or test-first programming.
But the simplicity can be deceptive, with many programmers tiring of these katas too soon, missing out on some of the more mind-bending and paradigm-expanding opportunities on offer.
This session will pick on a couple of katas and dig deeper into TDD, lambdas, language(s), (dys)functional programming and Alcubierre drive. It will present code in a variety of languages, highlight the weaknesses of some common mantras, play around with ideas — and blend code, humour and general nerdiness to be both an enjoyable and educational session.
Giordano Scalzo introduces himself as an iOS developer and provides a swift introduction to the Swift programming language. He demonstrates various Swift features through code examples, including functions, closures, classes, structs, enums, generics, and operator overloading. He also discusses unit testing support in Swift through XCTest and Quick. To conclude, he proposes coding a reverse polish notation calculator to demonstrate applying these Swift concepts.
This document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim motions and modes like Normal mode, Insert mode, and Visual mode to efficiently edit code. It also covers Vim features like syntax highlighting, custom syntax files, key mappings, and text objects that are useful for Perl. The document advocates that Vim is a powerful editor rather than an IDE and highlights how it can save significant time compared to less efficient editing methods.
This document provides code for backtesting a trading strategy using the quantstrat package in R. It loads relevant packages, defines parameters like the ticker ("SPY"), dates, and a trade size. Technical indicators like moving averages and RSI are calculated on SPY data. Signals are defined to generate buy/sell signals when indicators cross thresholds. Rules are added to enter/exit positions when signals occur. The strategy is applied using applyStrategy() and results are analyzed.
These are the slides I was using when delivering a short talk in Vienna PHP. The talk took place in Vienna on September 22th. More information about the PHP course I deliver can be found at php.course.lifemichael.com
In the ‘old’ days, when a circuit seemed to have a problem, one could look at each circuit to see if they could detect a bad circuit. Today, finding a bad chip is hard to due. Seeing a chip’s circuit may not be possible, how then can one determine a bad chip?
For example, in the 1970s, Memorex Corp. was designing their first “Thin Film Head” (TFH) and using micro chip components. It was soon realized that something was wrong with a small percent of its disc drives being made with these chips. But, how to detect or find the bad drives was not known. Destructive testing seemed like the only choice. Years went bye. No solution!
This document provides an overview of the topics covered in an introductory mathematics analysis course for business, economics, and social sciences. It includes:
1) A review of key concepts like algebra, subsets of real numbers, properties of operations, and graphing numbers on a number line.
2) An outline of course structure with sections on algebra, algebraic expressions, fractions, and mathematical systems.
3) Examples of problems and their step-by-step solutions covering topics like simplifying expressions, factoring, addition/subtraction of fractions, and properties of real numbers.
This document discusses building regression and classification models in R, including linear regression, generalized linear models, and decision trees. It provides examples of building each type of model using various R packages and datasets. Linear regression is used to predict CPI data. Generalized linear models and decision trees are built to predict body fat percentage. Decision trees are also built on the iris dataset to classify flower species.
An introduction to probabilistic data structuresMiguel Ping
This document provides an overview of probabilistic data structures. It describes how they trade accuracy for speed or space by providing approximate results. Specific probabilistic data structures covered include Bloom filters, count-min sketch, t-digest, and hyperloglog. Bloom filters are used for set membership tests and can return false positives but not false negatives. Count-min sketch counts frequencies/popular items with a two-dimensional array. T-digest approximates quantiles through a sparse representation of the cumulative distribution function. Hyperloglog estimates cardinality by observing leading zeros in binary representations.
This document discusses system monitoring tools and techniques. It introduces several open source monitoring tools like Nagios, Zabbix, and JFFNMS. It also discusses using Computer Telephony Integration (CTI) to call administrators when issues arise, but warns that phone bills may be high. The document demonstrates how to use the Telephony::CTPort module to make calls and receive calls for notification purposes. It also shows how to build a customizable and pluggable monitoring system using App::MadEye and integrating notification plugins like sending HTTP requests or updating a Trac ticket.
The presentation is an introduction to AI (deep learning). The key to success with AI is “asking good questions.” The talk was given in "Seminar in Information Systems and Applications" at National Tsing Hua University in Taiwan. During this talk, we discussed what a good question is, how we use design thinking process to improve our question, and how can we “answer” the question by deep learning.
The document provides an overview of an upcoming webinar on seldom used but valuable features of the @RISK software for Monte Carlo simulation. It outlines the presentation objectives which include learning about Palisade Corporation, an introduction to Monte Carlo simulation for new users, a demonstration of @RISK fundamentals for new users, highlighting new features in the latest @RISK version, exploring seldom used @RISK features, and discussing stochastic time series and Project integration. The webinar will be recorded and posted online for later viewing. Attendees are instructed to type any questions into the chat window during designated question periods.
Assumptions: Check yo'self before you wreck yourselfErin Shellman
Predicting the future is hard and it requires a lot of assumptions, also known as beliefs, also known as faith. In “Assumptions: Check yo self, before you wreck yo self” we explore the consequences of beliefs when constructing predictive models. We’ll walk through the process of developing a demand forecast for Evo, a Seattle-based outdoor recreation retailer, and discuss how assumptions influence the behavior of your application and ultimately the decisions you make.
The document discusses various techniques for curve fitting data, including interpolation, linear regression, and higher-order polynomial fitting. It begins by explaining the motivation for curve fitting as creating a single function to represent trends in observed data. Linear regression finds the best-fit straight line by minimizing the squared errors between data points and the line. Higher-order polynomials allow fitting nonlinear trends by finding coefficients for polynomial functions up to a given order, such as quadratic, that also minimize the squared errors.
The document discusses various PHP programming concepts including conditional statements like if/else, switch statements, arrays, loops, functions, and nested looping. It provides code examples to demonstrate how to use if/elseif/else statements, foreach and for loops, functions with and without parameters/return values, and nested looping to create a multiplication table. It also covers break and continue statements and using cellpadding and cellspacing in HTML tables.
The document provides an overview of key concepts in C programming including variables, data types, operators, control flow structures like decisions and loops, and functions. It discusses how computers perform simple tasks like addition via inputs, storage in memory, processing, and outputs. Examples are provided to illustrate concepts like printf formatting, if/else statements, for/while loops, and break/continue keywords. Self-check questions review variable definitions, loop execution, and output of sample programs.
The document provides an introduction to artificial intelligence concepts including common AI problems (8 queens problem, Sudoku, 8-puzzle), applications (GPS), and games (StarCraft, Counter-Strike). It discusses how AI solutions often simulate human problem-solving processes by expressing them in a systematic way using techniques like divide-and-conquer, implementation, and recursive depth-first search (DFS). Basic search algorithms and their tradeoffs are covered along with more advanced algorithms like A*.
OSMC 2013 | Making monitoring simple? by Michael MedinNETWAYS
In diesem Vortrag wird der neue vereinfachte Monitoring Agent NSClient++ vorgestellt. Mit der kommenden 0.4.2 Release von NSClient++ wird es nun endlich ein neues Check Subsystem geben, welches nicht nur auf aktuellen Windows-Systemen laufen, sondern dabei auch noch sehr schnell sein wird. Der Vortrag zeigt die neue vereinfachte Syntax sowie das Real-Time-Monitoring über alle Kommandos von NSClient++ hinweg. Ergänzend wird es Updates an der Linuxfront und dem agentenlosen Monitoring geben.
A C# coding challenge to solve a range of mazes with differing dimensions and styles. The total run time was considerably less than a target maximum run time.
This document contains sample exam questions and answers for CIS 115 at Devry University. It includes two practice exams that cover topics like flowcharts, pseudocode, algorithms, control structures, arrays, and files. The exams provide multiple choice and short answer questions to test understanding of programming concepts and the ability to develop logic using pseudocode. Additional practice problems require rewriting pseudocode to correct logic errors or complete algorithm designs.
CLUTO is a software toolkit used for clustering high-dimensional datasets and analyzing cluster characteristics. It contains two main algorithms: Vcluster, which clusters based on the actual multi-dimensional data representation, and Scluster, which clusters based on a pre-computed similarity matrix. CLUTO can be run from the command line with various optional parameters to control the clustering method, analysis, and visualization of results.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Exact Real Arithmetic for Tcl
1. Exact Real Arithmetic in Tcl
Kevin B. Kenny
22nd
Annual Tcl/Tk Conference
21 October 2015
2. Have you ever hadHave you ever had
a software problema software problem
caused bycaused by
floating point roundoff?floating point roundoff?
3. Were you using floating pointWere you using floating point
for currency?for currency?
Did you learn from that mistake?
4. You havenYou haven’’t had floating-pointt had floating-point
precision problems?precision problems?
How do you know?How do you know?
5. Do you test your softwareDo you test your software
for the accuracy offor the accuracy of
floating-point results?floating-point results?
How do you know whatHow do you know what
the right answers are?the right answers are?
6. Floating point is full of horror storiesFloating point is full of horror stories
Many involve the precisionMany involve the precision
of intermediate results,of intermediate results,
not the input data nornot the input data nor
the ultimate answersthe ultimate answers
7. Catastrophic loss of significanceCatastrophic loss of significance
LetLet’’s say that we have the equations say that we have the equation
A x
2
+B x+C=0
And we want to findAnd we want to find xx. Asking the nearest high-. Asking the nearest high-
schooler for how to do it we get told,schooler for how to do it we get told,
x=
−B±√B
2
−4 A C
2 A
Everyone knows that! Brahmagupta published it inEveryone knows that! Brahmagupta published it in
A.D. 678! People have used that formula for 1500A.D. 678! People have used that formula for 1500
years!years!
8. Catastrophic loss of significanceCatastrophic loss of significance
proc quad1 {a b c} {proc quad1 {a b c} {
set d [expr {sqrt($b*$b – 4.*$a*$c)}]set d [expr {sqrt($b*$b – 4.*$a*$c)}]
set r0 [expr {(-$b - $d) / (2. * $a)}]set r0 [expr {(-$b - $d) / (2. * $a)}]
set r1 [expr {(-$b + $d) / (2. * $a)}]set r1 [expr {(-$b + $d) / (2. * $a)}]
return [list $r0 $r1]return [list $r0 $r1]
}}
quad1 1.0 200.0 -1.5e-12quad1 1.0 200.0 -1.5e-12
→→ -200.0-200.0 1.4210854715202004e-141.4210854715202004e-14
What?What?
The correct answer is approximately 7.5The correct answer is approximately 7.5××1010-15-15
!!
(The answer:(The answer: -200. - sqrt(400.000000000006)-200. - sqrt(400.000000000006) losesloses
all but one bit of the significand.)all but one bit of the significand.)
9. YouYou’’re doing it wrong!re doing it wrong!
An experienced numerical analyst will tell you thatAn experienced numerical analyst will tell you that
the right way to use the quadratic formula is tothe right way to use the quadratic formula is to
write it in a different way:write it in a different way:
x=
−B±√B2
−4 A C
2 A
x=
2C
−B±√B
2
−4 A C
Experienced numerical analysts are expensive.Experienced numerical analysts are expensive.
They can take a long time to solve your problem.They can take a long time to solve your problem.
They still make mistakes and miss things.They still make mistakes and miss things.
How do you know whenHow do you know when theythey have it right?have it right?
10. A popular idea: variable precisionA popular idea: variable precision
Repeat calculations at different precisionsRepeat calculations at different precisions
See what changes as precision increases: do weSee what changes as precision increases: do we
get the same answer?get the same answer?
But consider the problem of finding the limit of:But consider the problem of finding the limit of:
x0 = 4.00
x1 = 4.25
xn = 108−
815−
1500
xn−2
xn−1
12. What if we hadWhat if we had exactexact arithmetic?arithmetic?
●
Control the precision of the outputControl the precision of the output
●
Compute intermediate results to whatever levelCompute intermediate results to whatever level
of precision is neededof precision is needed
● ReplaceReplace ‘‘numbernumber’’ withwith ‘algorithmtocomputethe‘algorithmtocomputethe numbernumber’’
13. Exact arithmetic packageExact arithmetic package
TcllibTcllib math::exactmath::exact package. (Pure Tcl.)package. (Pure Tcl.)
Numbers (the result of calculations) are TclOO objects.Numbers (the result of calculations) are TclOO objects.
Reference counted objects – which is unpleasant.Reference counted objects – which is unpleasant.
Created byCreated by math::exact::exactexprmath::exact::exactexpr
Can format themselves withCan format themselves with asPrintasPrint andand asFloatasFloat
methods.methods.
Methods take desired precision. (Precision is the sum ofMethods take desired precision. (Precision is the sum of
the number of bits of exponent plus the number of bits ofthe number of bits of exponent plus the number of bits of
significand.)significand.)
15. Exact arithmetic:Exact arithmetic:
fixing the quadratic formulafixing the quadratic formula
proc exactquad {a b c} {proc exactquad {a b c} {
set d [[exactexpr {sqrt($b*$b - 4*$a*$c)}] ref]set d [[exactexpr {sqrt($b*$b - 4*$a*$c)}] ref]
set r0 [[exactexpr {(-$b - $d)set r0 [[exactexpr {(-$b - $d)
/ (2 * $a)}] ref]/ (2 * $a)}] ref]
set r1 [[exactexpr {(-$b + $d)set r1 [[exactexpr {(-$b + $d)
/ (2 * $a)}] ref]/ (2 * $a)}] ref]
$d unref$d unref
return [list $r0 $r1]return [list $r0 $r1]
}}
16. Exact arithmetic:Exact arithmetic:
fixing the quadratic formulafixing the quadratic formula
set a [[exactexpr 1] ref]set a [[exactexpr 1] ref]
set b [[exactexpr 200] ref]set b [[exactexpr 200] ref]
set c [[exactexpr {(-3/2) * 10**-12}] ref]set c [[exactexpr {(-3/2) * 10**-12}] ref]
lassign [exactquad $a $b $c] r0 r1lassign [exactquad $a $b $c] r0 r1
$a unref; $b unref; $c unref$a unref; $b unref; $c unref
puts [list [$r0 asFloat 70] [$r1 asFloat 110]]puts [list [$r0 asFloat 70] [$r1 asFloat 110]]
$r0 unref; $r1 unref$r0 unref; $r1 unref
-2.000000000000000075e2 7.499999999999999719e-15-2.000000000000000075e2 7.499999999999999719e-15
No manipulation of the formulas! Just ask for 70 “bits” forNo manipulation of the formulas! Just ask for 70 “bits” for
the larger root and 110 “bits” for the smaller, and you getthe larger root and 110 “bits” for the smaller, and you get
them.them.
17. Major disadvantagesMajor disadvantages
●
SLOW – but for generating constants inSLOW – but for generating constants in
advance (for use in algorithms or for testing),advance (for use in algorithms or for testing),
probably okprobably ok
●
No comparison operators (I'll explain…)No comparison operators (I'll explain…)
●
No floating point notation on inputNo floating point notation on input
●
Ref counting rather than automatic reclamationRef counting rather than automatic reclamation
18. No comparison?No comparison?
●
Comparison of reals isn't decidable.Comparison of reals isn't decidable.
●
What you can have are operatorsWhat you can have are operators
a<ϵ b,a>ϵ b,a=ϵ b,...
|b−a|≤ϵ
These comparisons are computible.
Need a notation for specifying these in
expressions.
which are allowed to return the wrong answer if
19. No floating point notation?No floating point notation?
What doesWhat does 0.33333333333333330.3333333333333333 mean?mean?
●
The fractionThe fraction
3333333333333333/10000000000000000, exactly3333333333333333/10000000000000000, exactly
representing the string representation?representing the string representation?
●
The fractionThe fraction
6004799503160661/18014398509481984,6004799503160661/18014398509481984,
exactly representing the internal representation?exactly representing the internal representation?
●
The fraction 1/3, which will have string and internalThe fraction 1/3, which will have string and internal
representations as above?representations as above?
For now, say what you mean! (Suggestions for what'sFor now, say what you mean! (Suggestions for what's
reasonable are welcome!)reasonable are welcome!)
20. No garbage collection?No garbage collection?
●
The fragile reference problemThe fragile reference problem
●
Common to all interfaces between Tcl andCommon to all interfaces between Tcl and
managed code systems (e.g., Java, .NET)managed code systems (e.g., Java, .NET)
●
Bigger topic than just exact realsBigger topic than just exact reals
●
Generic extension for adding fragile referencesGeneric extension for adding fragile references
exists. (Implemented originally for TCOM)exists. (Implemented originally for TCOM)
http://www.vex.net/~cthuang/counted/http://www.vex.net/~cthuang/counted/
22. Want to explore under the hood?
(Warning, some mathematics ahead...)
23. Digit streamsDigit streams
Digit streams, at first look attractive.Digit streams, at first look attractive.
Make each algorithm into a coroutine that returnsMake each algorithm into a coroutine that returns
decimal or binary digits.decimal or binary digits.
But there is a problem: things get jammed up!But there is a problem: things get jammed up!
What is 1/6What is 1/6 ×× 9 in decimal?9 in decimal?
(It is 1.5, right?)(It is 1.5, right?)
Recall that 1/6 = 0.16666….Recall that 1/6 = 0.16666….
25. What about continued fractions?What about continued fractions?
x=a+
1
b+
1
c+
1
⋱
Terminate for all the rationals.
Periodic for quadratic surds.
The same problem with getting
jammed – just more complicated
expressions. What is sqrt(2)**2?
Sqrt(2) ≤ 1+1/ 2(1.5) Sqrt(2)**2 ≤ 2.25
Sqrt(2) ≥ 1+1/(2+1) (1.333…) Sqrt(2)**2 ≥ 1.777...
Sqrt(2) ≥ 1+1/(2+1/2) (1.4) Sqrt(2)**2 ≥ 1.96
Sqrt(2) ≤ 1+1/(2+1/(2+1)) (1.42857…) Sqrt(2)**2 ≤ 2.04…
Sqrt(2) ≤ 1+1/(2+1/(2+1/2))) (1.41666…) Sqrt(2)**2 ≤ 2.0069444...
Sqrt(2) ≥ 1+1/(2+1/(2+1/(2+1)))) (1.41176…) Sqrt(2)**2 ≥ 1.993...
We can never decide whether the a term of the result is
1 or 2!
26. Why do these ideas fail?Why do these ideas fail?
●
If numbers are programs, exactIf numbers are programs, exact
comparison (equality, forcomparison (equality, for
example) is the Halting Problem.example) is the Halting Problem.
●
Alan Turing was originally anAlan Turing was originally an
analyst, not a logician.analyst, not a logician.
●
TuringTuring’’s work on the Haltings work on the Halting
Problem was a byproduct of hisProblem was a byproduct of his
attempt to put the real numbersattempt to put the real numbers
on a sound theoretical footing.on a sound theoretical footing.
Exact comparison of real numbersExact comparison of real numbers
is not decidable!is not decidable!
27. Use weak comparisonsUse weak comparisons
a<ϵ b,a>ϵ b,a=ϵ b,...
Allowed to return the wrong answer if
|b−a|≤ϵ
Weak comparisons are computible.
28. Use redundant representationsUse redundant representations
More than one way to write a given numberMore than one way to write a given number
Can choose at least one correct way to write aCan choose at least one correct way to write a
number using only weak comparisons.number using only weak comparisons.
29. Rational numbers and integerRational numbers and integer
vectorsvectors
Represent the rational number a/b by the vectorRepresent the rational number a/b by the vector
{a b}{a b}
(Assume reduction to lowest terms).(Assume reduction to lowest terms).
Division by zero is OK, and there is a single pointDivision by zero is OK, and there is a single point
at infinity.at infinity.
a
b
b=1
(a/b,1)
30. Möbius transformationsMöbius transformations
The matrixThe matrix
[a c
b d]
represents the function
a x+c
b x+d a
IfIf xx>0>0, this is also the, this is also the
generalized intervalgeneralized interval
[[cc//dd .... aa//bb], moving], moving
clockwise on the circleclockwise on the circle
a
b
(c/d ,1)
(a/b,1)
31. Composition of transformationsComposition of transformations
If f (x)=
a x+c
b x+d
, and g(x)=
e x+g
f x+h
,
then f (g(x))=
(ae+c f )x+(a g+ch)
(be+d f )x+(b g+dh)
This is just matrix multiplication:
[a c
b d][e g
f h]=[ae+c f a g+ch
be+d f bg+d h]
32. Relation to continued fractionsRelation to continued fractions
a+
1
b+
1
c+
1
⋱
can be written[a 1
1 0]⋅[b 1
1 0]⋅[c 1
1 0]⋅⋯.
Real numbers are streams ofReal numbers are streams of
matrices.matrices.
33. Bilinear transformationsBilinear transformations
We also use 2We also use 2××22××2 tensors. If2 tensors. If xx andand yy are vectors,are vectors,
write:write:
[a e
b f |c g
d h]L x R y , meaning
a x y+b x+c y+d
e x y+f x+g y+h
IfIf xx andand yy are vectors,are vectors, AA andand BB are matrices,are matrices, TT is ais a
tensor, all of the following are well defined:tensor, all of the following are well defined:
A⋅x vector T L x matrix T R y vector
A⋅B matrix T L A matrix T R B matrix
A⋅T tensor
34. Arithmetic on exact realsArithmetic on exact reals
Remembering thatRemembering that
[a e
b f |c g
d h]L x R y means
a x y+b x+c y+d
e x y+f x+g y+h
The following special tensors will be useful.The following special tensors will be useful.
[0 1
0 0|1 0
0 1] addition [1 0
0 0|0 0
0 1] multiplication
[0 1
0 0|−1 0
0 1] subtraction [0 1
0 0|0 0
1 0] division
35. Expressions are trees of tensors,Expressions are trees of tensors,
matrices, vectorsmatrices, vectors
●
Special functions and non-integer powers areSpecial functions and non-integer powers are
infinite treesinfinite trees
●
Lazy evaluation. A node in a special functionLazy evaluation. A node in a special function
knows how to instantiate its children and doesknows how to instantiate its children and does
so only when it needs to.so only when it needs to.
●
Example:Example:
√x=[x+1 2 x
2 x+1]⋅[x+1 2 x
2 x+1]⋅[x+1 2x
2 x+1]⋅⋯
ln x=[x−1 x−1
1 x ]⋅∏
n=1
∞
[n x+n+1 (2n+1)x
2n+1 (n+1)x+n]
36. Sign matricesSign matrices
A sign matrix selects half the number circle.A sign matrix selects half the number circle.
S−=[0 −1
1 0 ] S∞=[ 1 1
−1 1]S+=[1 0
0 1] S0=[1 −1
1 1 ]
Every number's stream begins with a sign matrix.Every number's stream begins with a sign matrix.
Always have two choices – decidable.Always have two choices – decidable.
Remaining matrices in the stream will have all elementsRemaining matrices in the stream will have all elements
nonnegative.nonnegative.
37. Digit matricesDigit matrices
●
Digit matrices slice up the nonnegative half-lineDigit matrices slice up the nonnegative half-line
D−=[1 0
1 2] D+=[2 1
0 1]D0=[3 1
1 3]
0 1/3 1 3
Each positive number is aEach positive number is a
stream of digit matrices.stream of digit matrices.
Each digit matrix conveysEach digit matrix conveys
≈≈1 bit of information.1 bit of information.
38. Pulling the streamPulling the stream
●
For each possible digit matrixFor each possible digit matrix DD, a matrix, a matrix MM or tensoror tensor TT
asks whether it can prove thatasks whether it can prove that DD−1−1
xx is still positive.is still positive.
●
If so, it emitsIf so, it emits DD and replaces itself withand replaces itself with DD−1−1
xx..
●
If no digit is emitted, then a matrixIf no digit is emitted, then a matrix MM asks for a digitasks for a digit EE
from its argument, multiplies itself by the digit and triesfrom its argument, multiplies itself by the digit and tries
again.again.
●
A tensorA tensor TT will ask its left and right arguments inwill ask its left and right arguments in
succession and replace itself withsuccession and replace itself with
TT LL EE oror TT RR EE respectivelyrespectively
●
Every digit can be delivered in a finite number of stepsEvery digit can be delivered in a finite number of steps