Interactive Solver for Polynomial Inequalities Using Interval Arithmetic

Total Page:16

File Type:pdf, Size:1020Kb

Interactive Solver for Polynomial Inequalities Using Interval Arithmetic DESIGN PROJECT REPORT DESIGN PROJECT 2A 2020/2021 INTERACTIVE SOLVER FOR POLYNOMIAL INEQUALITIES USING INTERVAL ARITHMETIC Mart de Roos (s2176416) Neil Kichler (s2106019) Rifqi Adlan Apriyadi (s2079755) Max Resing (s2069229) Supervised By: Dr.-Ing. Moritz Hahn Department of FMT University of Twente, Enschede 1 Abstract The report is part of the Design Project course at the University of Twente. The project was requested by the University group Formal Methods and Tools (FMT). The motivation behind the project is the sparse availability of interactive visualization tools in the domain of inter- val arithmetic. A big issue in mathematics is uncertainty, a quantitative estimation of errors. Interval arithmetic is one of the mathematical tools to eliminate uncertainty and to draw mathematically sound conclusions. The project focuses on the visual support of solving polynomial inequal- ities using interval arithmetic. In interval arithmetic, the variables of polynomial inequalities are representative of intervals with well-defined boundaries. The parameter space is then divided into regions, which can be split into finer sub-regions. The inequalities can be evaluated for the boundaries of the sub-regions to determine whether a given inequalities holds true, false, or undecided for specific boundaries. The report elab- orates on the design process during the development of the application, including the specification of the requirements, the design choices, the mathematical background and the testing procedure. A system overview is given and every aspect of the application is explained and justified in detail. In the future, this application could be used by researchers and practitioners interested in applying interval arithmetic to their specific problems. 2 Contents 1 Introduction 6 2 Domain Analysis 7 2.1 Potential Users . .7 2.2 Existing software . .7 3 Requirements 8 3.1 User requirements . .8 3.2 System requirements . .9 4 Planning 10 4.1 Feature Planning . 10 4.2 Schedule & Milestones . 11 5 Research 13 5.1 Mathematical Background . 13 5.1.1 Mathematical Operators . 13 5.1.2 Monotonic and Non-Monotonic Functions . 14 5.1.3 Inequality Operators . 15 5.2 Interval Arithmetic on Modern-day Computers . 15 5.2.1 Machine-made Issues . 15 5.2.2 IEEE 754 - Standard for Floating-Point Arithmetic . 16 5.2.3 Rational Data Type . 17 5.2.4 IEEE 1788 - Standard for Interval Arithmetic . 17 5.2.5 MPFR - Solution to Floating-Point Rounding Errors . 18 5.3 Ternary Operations . 19 5.4 Parser . 19 5.4.1 Stages of a parser . 20 5.4.2 Tokenizer . 20 5.4.3 Grammar . 20 5.4.4 Abstract syntax tree . 21 5.4.5 Walking an abstract syntax tree . 21 5.4.6 Parser types . 22 6 Global and Architectural design 23 7 Preliminary Design Choices 24 7.1 Programming Language . 24 7.2 Libraries . 24 7.3 Architectural Design Choices . 28 3 8 System Overview 29 8.1 Menu . 29 8.2 2D-View . 30 8.3 Console . 31 8.4 History . 32 8.5 Region Table View . 33 8.6 Region Tree View . 34 8.7 3D-View . 35 8.8 Notes . 36 8.9 Help Box . 36 9 Detailed Design 38 9.1 Data Layout . 38 9.2 History . 39 9.3 Saving and Loading Files . 39 9.4 Graphical User Interface . 39 9.5 3D-Viewport . 41 9.6 Interval Arithmetic . 43 9.6.1 Arithmetic Operations . 44 9.6.2 Boolean Operations . 45 9.6.3 Numerical Operations . 46 9.7 Splitting intervals . 47 9.7.1 Memory Pool Allocation . 47 9.7.2 Manual Refinement . 49 9.7.3 Automatic Refinement . 49 9.8 Parser . 51 9.9 Expressions . 53 9.9.1 Unary Expressions . 53 9.9.2 Expression Sequences . 54 9.10 Evaluables . 54 9.10.1 InEquations . 55 9.10.2 Ternaries . 55 10 Testing 57 10.1 Interval Tests . 57 10.2 Expression Tests . 58 10.3 Property Tests . 58 10.4 Ternary Tests . 58 10.5 Parser Tests . 59 10.6 Task Scheduler Tests . 59 10.7 Gui Tests . 59 10.8 Usability . 60 10.8.1 Heuristics . 60 10.8.2 Evaluation . 61 4 11 Limitations 63 11.1 Parser . 63 11.2 Parsable Ternary Logic Operators . 63 11.3 Numerals . 63 11.4 Exponentiation with negative base . 64 11.5 GUI . 64 12 Evaluation and Conclusion 66 12.1 Requirements evaluation . 66 12.1.1 User requirements . 66 12.1.2 System requirements . 67 12.2 Reflection on Planning . 67 12.3 Reflection on Group Work . 68 12.4 Future Work . 69 12.5 Conclusion . 70 Appendices 73 A Images of Entire Application 73 5 1 Introduction The nature of mathematics is to provide precise answers and conclusions to a given problem. Whereas in practice, precision is a variable term and should rather be seen as accuracy. A temperature sensor can indicate that the temper- ature is 21 degree Celsius. But this measurement is actually an approximation and depending on the accuracy of the sensor, the actual temperature lies within an interval of 20.5 to 21.5 degree Celsius. This is essentially where interval arithmetic excels. Interval arithmetic is a mathematical tool to provide precise answers in a domain of uncertainty. In gen- eral, interval arithmetic provides the same arithmetic, trigonometric, numeric and Boolean operations which other fields of mathematics use. Nonetheless, interval arithmetic has some special rules and characteristics which might occur unconventional when comparing it to regular arithmetical operations. The product at hand was built on top of the theory of interval arithmetic. Since interval arithmetic supports the regular common operations like addition, subtractions, multiplication and non-negative exponentiation, one can also build polynomials in interval arithmetic. These polynomials can be added to an in- equality. An inequality is essentially a polynomial compared to a Boolean op- eration. The polynomial can have arbitrarily many variables. In an inequality, one can try to assign intervals to each variable. Next, one can try to shrink the intervals of each variable to draw conclusions under which set of numbers a given inequality holds true or false. The process of reducing the size of the intervals is called refinement. The application in question is a tool which visually supports the user to re- fine a given inequality and to draw conclusions about the inequality statement. The software helps to understand the characteristics of interval arithmetic. Fur- thermore, it supports a user's thinking process when working with intervals and inequalities. More use cases, as well as existing software is covered in the domain analysis in Chapter 2. Chapter 3 summarizes the user and system requirements before presenting a planning and milestones in Chapter 4. Afterwards, Chapter 5 cov- ers previously made research regarding mathematical and technical difficulties. It also includes applied theory which can be found in the products implemen- tation. Lastly, it refers to existing standards of the Institute of Electrical and Electronics Engineers (IEEE). The global architecture and a broad design de- scription is included in Chapter 6 before discussing detailed design decisions in Chapter 7. Chapter 8 guides the reader through the different components of the program. After making the reader familiar with the application, Chapter 7 is complemented with a technical detailed design description. Chapters 10 and 11 discuss technical limitations of the product as well as obstacles which the team encountered during the 10 weeks implementation of the project. Afterwards, the report continues with the team's testing approaches. The design report is concluded with possible extensions and future work and a final conclusion. 6 2 Domain Analysis Although, most of people with a mathematical education are aware of intervals, very few people actually studied the details of interval arithmetic. Since inter- val arithmetic is so exotic there exist very few tools to support researchers in this domain. Since interval arithmetic deals with real numbers, it bears some additional problems when developing programs which deal with intervals. An elaboration can be found in the research section 5. 2.1 Potential Users The system is designed for researchers and practitioners interested in inter- actively applying interval arithmetic to their mathematical problems. These mathematical problems can include polynomial or non-polynomial inequalities and constraint based systems that use Boolean expressions. Moreover, the pro- gram can be interesting to researchers developing new refinement algorithms in that it can give visual insights into these problems. Understanding the math- ematical problem domain inherently gives insight to the potential use cases. It is thus recommended to refer to Chapter 5.1. The client of this project is Moritz Hahn from the FMT (formal methods and tools) faculty of the Univer- sity of Twente who is simultaneously also the supervisor of this project. It can be assumed that all potential users are familiar with the subject material and have a good understanding of interval arithmetic. Focusing on explaining in- terval arithmetic inside the application is thus not needed and their knowledge regarding the use of complex programs will be fairly similar. 2.2 Existing software Given that the problem domain is rather academic in nature, not many produc- tion quality tools exist that can solve interval arithmetic problems interactively. A notable example is RSolver [10]. It focuses on a specific algorithm developed by Stefan Ratschan and visualizes the results in a two-dimensional scene. In- teracting with the program is, however, limited to entering new problems and seeing the solver automatically refine the problem. Manual refinement is not possible - only predefined settings can be toggled. Another program in this space is iSAT3 [1]. It is a command-line constraint checker that has its own do- main specific language to encode arithmetic problems which will then be solved.
Recommended publications
  • GNU MPFR the Multiple Precision Floating-Point Reliable Library Edition 4.1.0 July 2020
    GNU MPFR The Multiple Precision Floating-Point Reliable Library Edition 4.1.0 July 2020 The MPFR team [email protected] This manual documents how to install and use the Multiple Precision Floating-Point Reliable Library, version 4.1.0. Copyright 1991, 1993-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back- Cover Texts. A copy of the license is included in Appendix A [GNU Free Documentation License], page 59. i Table of Contents MPFR Copying Conditions ::::::::::::::::::::::::::::::::::::::: 1 1 Introduction to MPFR :::::::::::::::::::::::::::::::::::::::: 2 1.1 How to Use This Manual::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 2 Installing MPFR ::::::::::::::::::::::::::::::::::::::::::::::: 3 2.1 How to Install ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.2 Other `make' Targets :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 2.3 Build Problems :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 2.4 Getting the Latest Version of MPFR ::::::::::::::::::::::::::::::::::::::::::::::: 4 3 Reporting Bugs::::::::::::::::::::::::::::::::::::::::::::::::: 5 4 MPFR Basics ::::::::::::::::::::::::::::::::::::::::::::::::::: 6 4.1 Headers and Libraries :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 6
    [Show full text]
  • Perl 6 Deep Dive
    Perl 6 Deep Dive Data manipulation, concurrency, functional programming, and more Andrew Shitov BIRMINGHAM - MUMBAI Perl 6 Deep Dive Copyright © 2017 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: September 2017 Production reference: 1060917 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78728-204-9 www.packtpub.com Credits Author Copy Editor Andrew Shitov Safis Editing Reviewer Project Coordinator Alex Kapranoff Prajakta Naik Commissioning Editor Proofreader Merint Mathew Safis Editing Acquisition Editor Indexer Chaitanya Nair Francy Puthiry Content Development Editor Graphics Lawrence Veigas Abhinash Sahu Technical Editor Production Coordinator Mehul Singh Nilesh Mohite About the Author Andrew Shitov has been a Perl enthusiast since the end of the 1990s, and is the organizer of over 30 Perl conferences in eight countries.
    [Show full text]
  • Immediate Mode GUI – Theory and Example
    Immediate Mode GUI – Theory and Example Adam Sawicki http://asawicki.info What is GUI? Graphical User Interface (GUI) aka Head-Up Display (HUD) • Displays information • Handles interaction • Mouse, touch, keyboard, other controllers… 2 Implementation 1. Default system controls • (Used in desktop apps) • Pure system API: WinAPI • C++ library: Qt, wxWidgets, … • Another programming language: C#, Java, … 3 Implementation 1. Default system controls 2. Custom rendering • (Used in games, graphics apps) • Library: Scaleform, Dear ImGui, … • Your own implementation 4 Architecture Object-oriented – seems to be the most natural architecture for GUI • Class hierarchy for types of controls • Design patterns, e.g. composite • Fields: Position, Size, … • Methods: Show, Hide, Enable, Disable, … 5 Architecture Object-oriented – seems to be the most natural architecture for GUI 6 Example 7 Some thoughts • Actual objects also form a hierarchy • Every control is positioned relative to its parent • Similar to how games represent scene • High-level approach found in game engines – hiearchy of objects 8 Immediate mode GUI – idea • On low level (DirectX, OpenGL, Vulkan), rendering is stateless – „immediate mode” • Sequence of draw calls repeated every frame • SetShader • SetTexture • DrawTriangles • SetTexture • DrawTriangles • … • What if… we could render GUI this way? 9 Dear ImGui • https://github.com/ocornut/imgui • C++ library • Bindings to many languages available • License: MIT • Author: Omar Cornut (game developer) • Suited for real-time rendering •
    [Show full text]
  • Unicon's Opengl 2D and Integrated 2D/3D Graphics Implementation A
    Unicon's OpenGL 2D and Integrated 2D/3D Graphics Implementation A Thesis Presented in Partial Fulfillment of the Requirements for the Degree of Master of Science with a Major in Computer Science in the College of Graduate Studies University of Idaho by Kevin Z. Young Major Professor: Clinton Jeffery, Ph.D. Committee Members: Terence Soule, Ph.D.; Robert Heckendorn, Ph.D. Department Administrator: Terence Soule, Ph.D. August, 2020 ii Authorization to Submit Thesis This thesis of Kevin Z. Young, submitted for the degree of Master of Science with a Major in Computer Science and titled \Unicon's OpenGL 2D and Integrated 2D/3D Graphics Implementation," has been reviewed in final form. Permission, as indicated by the signatures and dates below is now granted to submit final copies for the College of Graduate Studies for approval. Advisor: Clinton Jeffery, Ph.D. Date Committee Mem- bers: Terence Soule, Ph.D. Date Robert Heckendorn, Ph.D. Date Department Chair: Terence Soule, Ph.D. Date iii Abstract Writing an OpenGL implementation for Unicon's 2D facilities introduces an oppor- tunity to create an integrated 2D/3D graphics mode that is intuitive to the end user. The implementation must be backwards-compatible with existing Unicon 2D graphics programs. The completion of the project will result in the release of the OpenGL im- plementation in public beta. Evaluation of this implementation shows it be qualitatively and quantitatively robust. iv Acknowledgments I would like to acknowledge my parents for giving me to opportunity to pursue higher education. I would also like to acknowledge my major professor, Dr.
    [Show full text]
  • CARPET and FLOOR COVERING Space
    . \ PAGE TWENTY THURSDAY, JULY 10, 1969 Daily Net Press ^ A . - ' i iWanrliPiitfr lEtti^mns Ifpralii For The Week Ended The Weather 2ime 28, U W the use of trainees at that Fair, continued warm and school. humid tonight and tomorrow. Town Gets $8^769 Grant Low tonilght about 6S. High to­ Other budget reductions made Yarnott'Kehl Dohkin Chides Democrats 15,459 necessary by the lower grant morrow in the 80s. For Teacher Aides Plan ManeheUer— A City o f Vittage Charm are: $3,000 to $1,600 for admin­ Oh Case Mt. Study Issue 'Manciiester''has beei;.^ granted At that time, the assumption istration; $1,600 to $600 for Miss Evannle Elizab^rth Kehl /'V teachers’ released time to work VOL. NO. 239 TWENTY-TWO PAGES HIANCHEOTER,' CONN., FRIDAY, JULY 11, 1969 (Cteastfled AdrertUiig on Page 11) $8,769 by the State Deipartmerit was that a grant of $26,000-36,- and Rudolph Martin Yamott, Manchester’s Republican ICE TEN CENTS with trainees; $875 to $263 for tion " is exactly for that, a of Education under the Educa­ 000 would be forthcoming. Be­ bo^ of Bolton, were united in town chairman today oha'rged fusibility study, and for noth­ cause of the reduced grant. clerical help; and $1,130 to $146 tion Professions Development m&riage Saturday, May 31, at ing else.” Cone said several changes have fqr supplies and equipment. that Democratic Statd Rep. N. St. Maurice’s Chtu*ch, Bolton. On Tuesday, Boggini, who Act to work with Manchester had to be made In plans. In­ Cone said MCC would probab­ Charles Boggini and the legis­ was on record for spending the CJommunlty College in training stead of the 10 aides originally ly conduct a threer-week orienta­ The bride is the daughter of lature’s State Development Wrong Sentence teacher aides to cope with the tion period for trainees, who Mr.
    [Show full text]
  • Functional and Procedural Languages and Data Structures Learning
    Chapter 1 Functional and Procedural Languages and Data Structures Learning Joao˜ Dovicchi and Joao˜ Bosco da Mota Alves1 Abstract: In this paper authors present a didactic method for teaching Data Structures on Computer Science undergraduate course. An approach using func- tional along with procedural languages (Haskell and ANSI C) is presented, and adequacy of such a method is discussed. Authors are also concerned on how functional language can help students to learn fundamental concepts and acquire competence on data typing and structure for real programming. 1.1 INTRODUCTION Computer science and Information Technology (IT) undergraduate courses have its main focus on software development and software quality. Albeit recent in- troduction of Object Oriented Programming (OOP) have been enphasized, the preferred programming style paradigm is based on imperative languages. FOR- TRAN, Cobol, Algol, Pascal, C and other procedural languages were frequently used to teach computer and programming concepts [Lev95]. Nowadays, Java is the choice for many computer science teaching programs [KW99, Gri00, Blu02, GT98], although “the novelty and popularity of a language do not automatically imply its suitability for the learning of introductory programming” [Had98]. Inside undergraduate curricula, Data Structures courses has some specific re- quirements that depends on mathematical formalism. In this perspective, concepts 1Remote Experimentation Laboratory, Informatics and Statistics Department (INE), Universidade Federal de Santa Catarina (UFSC), Florianopolis,´ SC, Brazil, CEP 88040-900; Phone: +55 (48) 331 7511; Fax: +55 (48) 331 9770; Email: [email protected] and [email protected] 1 on discrete mathematics is very important on understanding this formalism. These courses’ syllabuses include concept attainment and competence development on expression evaluation, iteration, recursion, lists, graphs, trees, and so on.
    [Show full text]
  • Vivado Design Suite User Guide: High-Level Synthesis (UG902)
    Vivado Design Suite User Guide High-Level Synthesis UG902 (v2018.3) December 20, 2018 Revision History Revision History The following table shows the revision history for this document. Section Revision Summary 12/20/2018 Version 2018.3 Schedule Viewer Updated information on the schedule viewer. Optimizing the Design Clarified information on dataflow and loops throughout section. C++ Arbitrary Precision Fixed-Point Types: Reference Added note on using header files. Information HLS Math Library Updated information on how hls_math.h is used. The HLS Math Library, Fixed-Point Math Functions Updated functions. HLS Video Library, HLS Video Functions Library Moved the HLS video library to the Xilinx GitHub (https:// github.com/Xilinx/xfopencv) HLS SQL Library, HLS SQL Library Functions Updated hls::db to hls::alg functions. System Calls Added information on using the __SYNTHESIS__ macro. Arrays Added information on array sizing behavior. Command Reference Updated commands. config_dataflow, config_rtl Added the option -disable_start_propagation Class Methods, Operators, and Data Members Added guidance on specifying data width. UG902 (v2018.3) December 20, 2018Send Feedback www.xilinx.com High-Level Synthesis 2 Table of Contents Revision History...............................................................................................................2 Chapter 1: High-Level Synthesis............................................................................ 5 High-Level Synthesis Benefits....................................................................................................5
    [Show full text]
  • Comparison of Unity and Unreal Engine
    Bachelor Project Czech Technical University in Prague Faculty of Electrical Engineering F3 Department of Computer Graphics and Interaction Comparison of Unity and Unreal Engine Antonín Šmíd Supervisor: doc. Ing. Jiří Bittner, Ph.D. Field of study: STM, Web and Multimedia May 2017 ii iv Acknowledgements Declaration I am grateful to Jiri Bittner, associate I hereby declare that I have completed professor, in the Department of Computer this thesis independently and that I have Graphics and Interaction. I am thankful listed all the literature and publications to him for sharing expertise, and sincere used. I have no objection to usage of guidance and encouragement extended to this work in compliance with the act §60 me. Zákon c. 121/2000Sb. (copyright law), and with the rights connected with the Copyright Act including the amendments to the act. In Prague, 25. May 2017 v Abstract Abstrakt Contemporary game engines are invalu- Současné herní engine jsou důležitými ná- able tools for game development. There stroji pro vývoj her. Na trhu je množ- are numerous engines available, each ství enginů a každý z nich vyniká v urči- of which excels in certain features. To tých vlastnostech. Abych srovnal výkon compare them I have developed a simple dvou z nich, vyvinul jsem jednoduchý ben- game engine benchmark using a scalable chmark za použití škálovatelné 3D reim- 3D reimplementation of the classical Pac- plementace klasické hry Pac-Man. Man game. Benchmark je navržený tak, aby The benchmark is designed to em- využil všechny důležité komponenty her- ploy all important game engine compo- ního enginu, jako je hledání cest, fyzika, nents such as path finding, physics, ani- animace, scriptování a různé zobrazovací mation, scripting, and various rendering funkce.
    [Show full text]
  • Gamified 3D Orthopaedic Rehabilitation Using Low Cost and Portable Inertial Sensors
    Gamified 3D Orthopaedic Rehabilitation Using Low Cost and Portable Inertial Sensors Grigorios Kontadakis A thesis submitted in fulfillment of the requirements for the degree of Master of Science in Electrical and Computer Engineering. School of Electrical and Computer Engineering Laboratory of Distributed Multimedia Information Systems and Applications – TUC/MUSIC CHANIA 2018 Abstract Abstract This work introduces an innovative gamified rehabilitation platform comprising of a mobile game and a custom sensor placed on the knee, intended for patients that have undergone Total Knee Replacement surgery, in collaboration with the General Hospital in Chania. The application uses a single custom-made, light, portable and low-cost sensor node consisting of an Inertial Measurement Unit (IMU) attached on a lower limb in order to capture its orientation in space in real-time, while the patient is completing a physiotherapy protocol. An IMU measures and reports a body's specific force (accelerometer), angular rate (gyroscope), and sometimes the magnetic field surrounding the body (magnetometer). IMUs provide the leading technology used in wearable devices and are employed in this thesis as they meet the main design constraints of this framework, maximizing portability and minimizing cost. Previous work indicates that when multiple IMUs are employed, satisfactory rehabilitation exercise classification accuracy results are achieved based on three, two and one IMUs. Such results drive the further investigation of the challenging classification problem using just a single IMU in this thesis, enhancing maximum portability compared to multiple IMU systems, in conjunction with sufficiently high success rates of movement detection. Our goal is to reduce the need for the physical presence of a physiotherapist by aiding the efficient performance of exercise sessions at any location and increase patient engagement during physiotherapy by motivating the user to participate in a game using the current ultra-portable framework of just a single IMU sensor and an Android device.
    [Show full text]
  • C++ Object-Oriented Library User's Manual [COOL]
    TEXAS I NSTRUMENTS C++ Object-Oriented Library User’s Manual MANUAL REVISION HISTORY C++ Object-Oriented Library User’s Manual (2566801-0001) Original Issue. March 1990 Copyright © 1990, 1991 Texas Instruments Incorporated Permission is granted to any individual or institution to use, copy, modify, and distribute this document, provided that this complete copyright and permission notice is maintained, intact, in all copies and supporting documentation. Texas Instruments Incorporated makes no representations about the suitability of this document or the software described herein for any purpose. It is provided ”as is” without express or implied warranty. Texas Instruments Incorporated Information Technology Group Austin, Texas C++ OBJECT-ORIENTED LIBRARY USER’S MANUAL CONTENTS Paragraph Title Page About This Manual . xi 1 Overview of COOL 1.1 Introduction. 1-1 1.2 Audience. 1-1 1.3 Major Attributes. 1-1 1.4 Macros. 1-2 1.5 Parameterized Templates. 1-2 1.6 Symbols and Packages. 1-3 1.7 Polymorphic Management. 1-3 1.8 Exception Handling. 1-4 1.9 Classes. 1-4 1.10 Class Hierarchy. 1-7 2 String Classes 2.1 Introduction. 2-1 2.2 Requirements. 2-1 2.3 String Class. 2-1 2.4 String Example. 2-7 2.5 Auxiliary char* Functions. 2-8 2.6 Regular Expression Class. 2-10 2.7 Regular Expression Example. 2-12 2.8 General String Class. 2-13 2.9 General String Example. 2-20 3 Number Classes 3.1 Introduction. 3-1 3.2 Requirements. 3-1 3.3 Random Class. 3-1 3.4 Random Class Example.
    [Show full text]
  • Jakob Eklund CV
    Jakob Eklund – Senior software developer / Aspiring game creator Jakob Eklund CV Summary I am an inventive, curious, and analytical software developer who finds it easy to see the broader picture. Since I have worked as both agile coach and IT solutions manager, I am also used to guiding groups in both projects and ongoing development. After 10+ years in the IT industry, I am most aware that software does not emerge out of code alone. The organizational and cultural aspects are at least as important as the technical. For me, self-organizing teams, high-frequency deliveries and a scientific approach are all necessary to produce robust and well-functioning solutions. GOAL I want to make computer games that stimulate a sense of discovery, creativity, lateral thinking and empathy. As far as my individual work is concerned, I prefer to be a generalist rather than specialise. That being said, I am extra interested in software architecture, procedural animation, test-driven development and accessibility. I'm most comfortable working in inter-disciplinarily teams. I have taken leadership roles before and can do so again if the need arises. Work experience 2018-08 – 2019-06 Team lead Kundo In my role as Team Lead, I guided a team of six senior developers through the development of a new cloud service-based customer service product for Facebook. My responsibilities included developing the team at the individual and group level, project management (e.g. planning, goal definition, status reporting, customer relations) and personnel admin (e.g. recruiting, yearly employee interviews and salary negotiation). 2012-09 – 2018-08 Scrum master/IT solutions manager/Software developer MTM Swedish Agency for Accessible Media, MTM, has the mission to ensure that everyone has access to literature and information, regardless of reading ability.
    [Show full text]
  • Frictionless Debug UI in C++ What I Want to Talk About
    Frictionless Debug UI in C++ What I Want to Talk About ● Introduce Dear IMGui ● Show some tricks I’m using in some tools I’m experimenting with Friction? The amount of busy work needed to get something done, that isn’t directly related to what you want to do. Example: You want add a tweakable parameter to an algorithm you’re working on. But doing this may also require: ● Updating the header ● Updating comments / documentation ● Updating UI ● Updating serialization ● Waiting for things to compile and load ● etc. Why Care About Friction? ● Takes time ● Reduces momention and train of thought ● Makes people more likely to make “lazy” choices ● Takes the joy out of development How to Reduce Friction ● Evaluate your processes and coding conventions ● Defer the work until you know it’s needed ● Automation ● Try to keep compile times and loading times low ● Make it so you can tweak things without re-compiling and loading ● Keep duplication to a minimum ● etc. Debug and Tool UI Tools and debug UI can make parts of the development process way easier Unfortunately, it also increases the amount of stuff you need to update and maintain Usually, we don’t care as much about how it looks as long as it’s functional. What is an Immediate Mode UI ● Similar to OpenGL immediate mode ○ (Note: Dear ImGui doesn’t use immediate mode rendering) ● Basically with IM GUIs the controlling code also creates the UI. ● There is very little state to maintain with and IM Gui. ● Unity has their own version of an Immediate Mode Gui.
    [Show full text]