In mathematics, a symmetric Boolean function is a Boolean function whose value does not depend on the order of its input bits, i.e., it depends only on the number of ones (or zeros) in the input. For this reason they are also known as Boolean counting functions. There are 2n+1 symmetric n-ary Boolean functions. Instead of the truth table, traditionally used to represent Boolean functions, one may use a more compact representation for an n-variable symmetric Boolean function: the (n + 1)-vector, whose i-th entry (i = 0, ..., n) is the value of the function on an input vector with i ones. Mathematically, the symmetric Boolean functions correspond one-to-one with the functions that map n+1 elements to two elements, f : { 0 , 1 , . . . , n } → { 0 , 1 } {\displaystyle f:\{0,1,...,n\}\rightarrow \{0,1\}} . Symmetric Boolean functions are used to classify Boolean satisfiability problems. == Special cases == A number of special cases are recognized: Majority function: their value is 1 on input vectors with more than n/2 ones Threshold functions: their value is 1 on input vectors with k or more ones for a fixed k All-equal and not-all-equal function: their values is 1 when the inputs do (not) all have the same value Exact-count functions: their value is 1 on input vectors with k ones for a fixed k One-hot or 1-in-n function: their value is 1 on input vectors with exactly one one One-cold function: their value is 1 on input vectors with exactly one zero Congruence functions: their value is 1 on input vectors with the number of ones congruent to k mod m for fixed k, m Parity function: their value is 1 if the input vector has odd number of ones The n-ary versions of AND, OR, XOR, NAND, NOR and XNOR are also symmetric Boolean functions. == Properties == In the following, f k {\displaystyle f_{k}} denotes the value of the function f : { 0 , 1 } n → { 0 , 1 } {\displaystyle f:\{0,1\}^{n}\rightarrow \{0,1\}} when applied to an input vector of weight k {\displaystyle k} . === Weight === The weight of the function can be calculated from its value vector: | f | = ∑ k = 0 n ( n k ) f k {\displaystyle |f|=\sum _{k=0}^{n}{\binom {n}{k}}f_{k}} === Algebraic normal form === The algebraic normal form either contains all monomials of certain order m {\displaystyle m} , or none of them; i.e. the Möbius transform f ^ {\displaystyle {\hat {f}}} of the function is also a symmetric function. It can thus also be described by a simple (n+1) bit vector, the ANF vector f ^ m {\displaystyle {\hat {f}}_{m}} . The ANF and value vectors are related by a Möbius relation: f ^ m = ⨁ k 2 ⊆ m 2 f k {\displaystyle {\hat {f}}_{m}=\bigoplus _{k_{2}\subseteq m_{2}}f_{k}} where k 2 ⊆ m 2 {\displaystyle k_{2}\subseteq m_{2}} denotes all the weights k whose base-2 representation is covered by the base-2 representation of m (a consequence of Lucas’ theorem). Effectively, an n-variable symmetric Boolean function corresponds to a log(n)-variable ordinary Boolean function acting on the base-2 representation of the input weight. For example, for three-variable functions: f ^ 0 = f 0 f ^ 1 = f 0 ⊕ f 1 f ^ 2 = f 0 ⊕ f 2 f ^ 3 = f 0 ⊕ f 1 ⊕ f 2 ⊕ f 3 {\displaystyle {\begin{array}{lcl}{\hat {f}}_{0}&=&f_{0}\\{\hat {f}}_{1}&=&f_{0}\oplus f_{1}\\{\hat {f}}_{2}&=&f_{0}\oplus f_{2}\\{\hat {f}}_{3}&=&f_{0}\oplus f_{1}\oplus f_{2}\oplus f_{3}\end{array}}} So the three variable majority function with value vector (0, 0, 1, 1) has ANF vector (0, 0, 1, 0), i.e.: Maj ( x , y , z ) = x y ⊕ x z ⊕ y z {\displaystyle {\text{Maj}}(x,y,z)=xy\oplus xz\oplus yz} === Unit hypercube polynomial === The coefficients of the real polynomial agreeing with the function on { 0 , 1 } n {\displaystyle \{0,1\}^{n}} are given by: f m ∗ = ∑ k = 0 m ( − 1 ) | k | + | m | ( m k ) f k {\displaystyle f_{m}^{}=\sum _{k=0}^{m}(-1)^{|k|+|m|}{\binom {m}{k}}f_{k}} For example, the three variable majority function polynomial has coefficients (0, 0, 1, -2): Maj ( x , y , z ) = ( x y + x z + y z ) − 2 ( x y z ) {\displaystyle {\text{Maj}}(x,y,z)=(xy+xz+yz)-2(xyz)} == Examples ==
Depth peeling
In computer graphics, depth peeling is an exact multipass method of order-independent transparency that extracts transparent fragments into depth layers and composites those layers in depth order. Depth peeling has the advantage of being able to generate correct results even for complex images containing intersecting transparent objects. == Method == Depth peeling works by rendering the image multiple times. Depth peeling uses two Z buffers, one that works conventionally, and one that is not modified, and sets the minimum distance at which a fragment can be drawn without being discarded. For each pass, the previous pass' conventional Z-buffer is used as the minimal Z-buffer, so each pass removes already-captured nearer fragments and draws the next depth layer behind them. The resulting images can then be composited in depth order to form a single image. A major drawback of classical depth peeling is performance: it requires one geometry pass per peeled layer, so scenes with high depth complexity require many passes that each re-rasterize the transparent geometry. Later variants reduce the number of passes by peeling multiple layers or both front and back layers in a pass. Dual depth peeling reduces the geometry-pass count from N to N/2+1 by peeling one layer from the front and one from the back in each pass, while multi-layer depth peeling peels several layers per pass and reported up to an 8x speed-up in RGBA8 settings.
Rider Spoke
Rider Spoke developed by Blast Theory in collaboration with the Mixed Reality Lab was first staged at the Barbican, London in October 2007. Created for cyclists, it combines elements of theatre, performance, game play and state of the art technology. Rider Spoke was built in the IPerG project on the EQUIP architecture. Rider Spoke has since been presented in Athens (2008), Brighton (2008), Budapest (2008), Sydney (2009, Adelaide (2009) and Liverpool (2010).
False answer supervision
False answer supervision (FAS) refers to VoIP fraud where the billed duration for the caller is more than the duration of the actual connection duration. The FAS is usually performed by VoIP wholesalers in their softswitches for randomly selected calls. Adding a small amount of extra billed seconds for many calls results in significant revenue for the VoIP wholesaler. == Implementation of FAS == The FAS fraud can be implemented in a softswitch in many different ways. These include: False billing of party A without calling a party B. Usually a fake ringback tone, loopback audio or voicemail message is played Start of billing before actual answer of party B Extra billing after disconnection of party B == Detection of FAS == The FAS can be detected and blocked in a softswitch. Common methods are: Manual verification of call detail records: listening to voice recordings Identification of FAS types and using algorithms to automatically detect the FAS RTP audio signal processing: detection of voice RTP audio signal processing: detection of silence RTP audio signal processing: detection of ringback tone
JQuery
jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animations, and Ajax. It is free, open-source software using the permissive MIT License. As of August 2022, jQuery is used by 77% of the 10 million most popular websites. Web analysis indicates that it is the most widely deployed JavaScript library by a large margin, having at least three to four times more usage than any other JavaScript library. jQuery's syntax is designed to make it easier to navigate a document, select DOM elements, create animations, handle events, and develop Ajax applications. jQuery also provides capabilities for developers to create plug-ins on top of the JavaScript library. This enables developers to create abstractions for low-level interaction and animation, advanced effects and high-level, theme-able widgets. The modular approach to the jQuery library allows the creation of powerful dynamic web pages and Web applications. The set of jQuery core features—DOM element selections, traversal, and manipulation—enabled by its selector engine (named "Sizzle" from v1.3), created a new "programming style", fusing algorithms and DOM data structures. This style influenced the architecture of other JavaScript frameworks like YUI v3 and Dojo, later stimulating the creation of the standard Selectors API. Microsoft and Nokia bundle jQuery on their platforms. Microsoft includes it with Visual Studio for use within Microsoft's ASP.NET AJAX and ASP.NET MVC frameworks while Nokia has integrated it into the Web Run-Time widget development platform. == Overview == jQuery, at its core, is a Document Object Model (DOM) manipulation library. The DOM is a tree-structure representation of all the elements of a Web page. jQuery simplifies the syntax for finding, selecting, and manipulating these DOM elements. For example, jQuery can be used for finding an element in the document with a certain property (e.g. all elements with the h1 tag), changing one or more of its attributes (e.g. color, visibility), or making it respond to an event (e.g. a mouse click). jQuery also provides a paradigm for event handling that goes beyond basic DOM element selection and manipulation. The event assignment and the event callback function definition are done in a single step in a single location in the code. jQuery also aims to incorporate other highly used JavaScript functionality (e.g. fade ins and fade outs when hiding elements, animations by manipulating CSS properties). The principles of developing with jQuery are: Separation of JavaScript and HTML: The jQuery library provides simple syntax for adding event handlers to the DOM using JavaScript, rather than adding HTML event attributes to call JavaScript functions. Thus, it encourages developers to completely separate JavaScript code from HTML markup. Brevity and clarity: jQuery promotes brevity and clarity with features like "chainable" functions and shorthand function names. Elimination of cross-browser incompatibilities: The JavaScript engines of different browsers differ slightly so JavaScript code that works for one browser may not work for another. Like other JavaScript toolkits, jQuery handles all these cross-browser inconsistencies and provides a consistent interface that works across different browsers. Extensibility: New events, elements, and methods can be easily added and then reused as a plugin. == History == jQuery was originally created in January 2006 at BarCamp NYC by John Resig, influenced by Dean Edwards' earlier cssQuery library. It is currently maintained by a team of developers led by Timmy Willison (with the jQuery selector engine, Sizzle, being led by Richard Gibson). jQuery was originally licensed under the CC BY-SA 2.5, and relicensed to the MIT License in 2006. At the end of 2006, it was dual-licensed under GPL and MIT licenses. As this led to some confusion, in 2012 the GPL was dropped and is now only licensed under the MIT license. === Popularity === In 2015, jQuery was used on 62.7% of the top 1 million websites (according to BuiltWith), and 17% of all Internet websites. In 2017, jQuery was used on 69.2% of the top 1 million websites (according to Libscore). In 2018, jQuery was used on 78% of the top 1 million websites. In 2019, jQuery was used on 80% of the top 1 million websites (according to BuiltWith), and 74.1% of the top 10 million (per W3Techs). In 2021, jQuery was used on 77.8% of the top 10 million websites (according to W3Techs). == Features == jQuery includes the following features: DOM element selections using the multi-browser open source selector engine Sizzle, a spin-off of the jQuery project DOM manipulation based on CSS selectors that uses elements' names and attributes, such as id and class, as criteria to select nodes in the DOM Events Effects and animations Ajax Deferred and Promise objects to control asynchronous processing JSON parsing Extensibility through plug-ins Utilities, such as feature detection Compatibility methods that are natively available in modern browsers, but need fallbacks for old browsers, such as jQuery.inArray() and jQuery.each(). Cross-browser support === Browser support === jQuery 3.0 and newer supports "current−1 versions" (meaning the current stable version of the browser and the version that preceded it) of Firefox (and ESR), Chrome, Safari, and Edge as well as Internet Explorer 9 and newer. On mobile it supports iOS 7 and newer, and Android 4.0 and newer. == Distribution == The jQuery library is typically distributed as a single JavaScript file that defines all its interfaces, including DOM, Events, and Ajax functions. It can be included within a Web page by linking to a local copy or by linking to one of the many copies available from public servers. jQuery has a content delivery network (CDN) hosted by MaxCDN. Google in Google Hosted Libraries service and Microsoft host the library as well. Example of linking a copy of the library locally (from the same server that hosts the Web page): Example of linking a copy of the library from jQuery's public CDN: == Interface == === Functions === jQuery provides two kinds of functions, static utility functions and jQuery object methods. Each has its own usage style. Both are accessed through jQuery's main identifier: jQuery. This identifier has an alias named $. All functions can be accessed through either of these two names. ==== jQuery methods ==== The jQuery function is a factory for creating a jQuery object that represents one or more DOM nodes. jQuery objects have methods to manipulate these nodes. These methods (sometimes called commands), are chainable as each method also returns a jQuery object. Access to and manipulation of multiple DOM nodes in jQuery typically begins with calling the $ function with a CSS selector string. This returns a jQuery object referencing all the matching elements in the HTML page. $("div.test"), for example, returns a jQuery object with all the div elements that have the class test. This node set can be manipulated by calling methods on the returned jQuery object. ==== Static utilities ==== These are utility functions and do not directly act upon a jQuery object. They are accessed as static methods on the jQuery or $ identifier. For example, $.ajax() is a static method. === No-conflict mode === jQuery provides a $.noConflict() function, which relinquishes control of the $ name. This is useful if jQuery is used on a Web page also linking another library that demands the $ symbol as its identifier. In no-conflict mode, developers can use jQuery as a replacement for $ without losing functionality. === Typical start-point === Typically, jQuery is used by putting initialization code and event handling functions in $(handler). This is triggered by jQuery when the browser has finished constructing the DOM for the current Web page. or Historically, $(document).ready(callback) has been the de facto idiom for running code after the DOM is ready. However, since jQuery 3.0, developers are encouraged to use the much shorter $(handler) signature instead. === Chaining === jQuery object methods typically also return a jQuery object, which enables the use of method chains: This line finds all div elements with class attribute test , then registers an event handler on each element for the "click" event, then adds the class attribute foo to each element. Certain jQuery object methods retrieve specific values (instead of modifying a state). An example of this is the val() method, which returns the current value of a text input element. In these cases, a statement such as $('#user-email').val() cannot be used for chaining as the return value does not reference a jQuery object. === Creating new DOM elements === Besides accessing existing DOM nodes through jQuery, it is also possible to create new DOM nodes, if the string passed as the argument to $() factory looks like HTML. For example, the below code finds an HTML select element, and cr
Hello World: How to be Human in the Age of the Machine
Hello World: How to Be Human in the Age of the Machine (also titled Hello World: Being Human in the Age of Algorithms) is a book on the growing influence of algorithms and artificial intelligence (AI) on human life, authored by mathematician and science communicator Hannah Fry. The book examines how algorithms are increasingly shaping decisions in critical areas such as healthcare, transportation, justice, finance, and the arts. == Overview == Fry uses real-world examples, such as driverless cars and predictive policing, to illustrate her points. She emphasizes that algorithms are not inherently objective; they reflect biases embedded in their design and data inputs. While acknowledging their potential to improve efficiency and accuracy, Fry cautions against over-reliance on machines without human judgment. Fry explores moral questions surrounding algorithmic decision-making, such as whether machines can replace human empathy in critical situations. She advocates for greater scrutiny of algorithms to ensure fairness and avoid harmful biases. The book proposes a "cyborg future", where humans work alongside algorithms to enhance decision-making while retaining ultimate control. == Reception == Hello World has been praised for its clarity, engaging storytelling, and balanced perspective. Critics have highlighted Fry's ability to make complex topics accessible to general audiences while raising important questions about technology's impact on society. The book was shortlisted for awards such as the 2018 Baillie Gifford Prize and the Royal Society Science Book Prize.
History of RISC OS
RISC OS, the computer operating system developed by Acorn Computers for their ARM-based Acorn Archimedes range, was originally released in 1987 as Arthur 0.20, and soon followed by Arthur 0.30, and Arthur 1.20. The next version, Arthur 2, became RISC OS 2 and was completed in September 1988 and made available in April 1989. RISC OS 3 was released with the very earliest version of the A5000 in 1991 and contained a series of new features. By 1996 RISC OS had been shipped on over 500,000 systems. RISC OS 4 was released by RISCOS Ltd (ROL) in July 1999, based on the continued development of OS 3.8. ROL had in March 1999 licensed the rights to RISC OS from Element 14 (the renamed Acorn) and eventually from the new owner, Pace Micro Technology. According to the company, over 6,400 copies of OS 4.02 on ROM were sold up until production was ceased in mid-2005. RISC OS Select was launched in May 2001 by ROL. This is a subscription scheme allowing users access to the latest OS updates. These upgrades are released as soft-loadable ROM images, separate to the ROM where the boot OS is stored, and are loaded at boot time. Select 1 was shipped in May 2002, with Select 2 following in November 2002 and the final release of Select 3 in June 2004. ROL released the ROM based OS 4.39 the same month, dubbed RISC OS Adjust as a play on the RISC OS GUI convention of calling the three mouse buttons 'Select', 'Menu' and 'Adjust'. ROL sold its 500th Adjust ROM in early 2006. RISC OS 5 was released in October 2002 on Castle Technology's Acorn clone Iyonix PC. OS 5 is a separate evolution based upon the NCOS work done by Pace for set-top boxes. In October 2006, Castle announced a source sharing license plan for elements of OS 5. This Shared Source Initiative (SSI) is managed by RISC OS Open Ltd (ROOL). RISC OS 5 has since been released under a fully free and open source Apache 2.0 license, while the older no longer maintained RISC OS 6 has not. RISC OS Six was also announced in October 2006 by ROL. This is the next generation of their stream of the operating system. The first product to be launched under the name was the continuation of the Select scheme, Select 4. A beta-version of OS 6, Preview 1 (Select 4i1), was available in 2007 as a free download to all subscribers to the Select scheme, while in April 2009 the final release of Select 5 was shipped. The latest release of RISC OS from ROL is Select 6i1, shipped in December 2009. == Arthur == The OS was designed in the United Kingdom by Acorn for the 32-bit ARM based Acorn Archimedes, and released in its first version in 1987, as the Arthur operating system. The first public release of the OS was Arthur 1.20 in June 1987. It was bundled with a desktop graphical user interface (GUI), which mostly comprises assembly language software modules, and the Desktop module itself being written in BBC BASIC. It features a colour-scheme typically described as "technicolor". The graphical desktop runs on top of a command-line driven operating system which owes much to Acorn's earlier MOS operating system for its BBC Micro range of 8-bit microcomputers. Arthur, as originally conceived, was intended to deliver similar functionality to the operating system for the BBC Master series of computers, MOS, as a reaction to the fact that a more advanced operating system research project (ARX) would not be ready in time for the Archimedes. The Arthur project team, led by Paul Fellows, was given just five months to develop it entirely from the ground up—with the directive "just make it like the BBC micro". It was intended as a stop-gap until the operating system which Acorn had under development (ARX) could be completed. However, the latter was delayed time and again, and was eventually dropped when it became apparent that the Arthur development could be extended to have a window manager and full desktop environment. Also, it was small enough to run on the first 512K machines with only a floppy disc, whereas ARX required 4 megabytes and a hard drive. The OS development was carried out using a prototype ARM-based system connected to a BBC computer, before moving onto the prototype Acorn Archimedes the A500. Arthur was not a multitasking operating system, but offered support for adding application-level cooperative multitasking. No other version of the operating system was released externally, but internally the development of the desktop and window management continued, with the addition of a cooperative multitasking system, implemented by Neil Raine, which used the memory management hardware to swap-out one task, and bring in another between call-and-return from the Wimp_Poll call that applications were obliged to make to get messages under the desktop. Reminiscent of a similar technique employed by MultiFinder on the Apple Macintosh, this transformed a single-application-at-a-time system into one that could operate a full multi-tasking desktop. This transformation took place at version 1.6 though it was not made public until released, with the name change from Arthur to RISC OS, as version 2.0. Most software made for Arthur 1.2 can be run under RISC OS 2 and later because, underneath the desktop, the original Arthur OS core, API interfaces and modular structures remain as the heart of all versions. (A few titles will not work, however, because they used undocumented features, side effects or in a few cases APIs that became deprecated). In 2011, Business Insider listed Arthur as one of ten "operating systems that time forgot". == RISC OS 2 == RISC OS was a rapid development of Arthur 1.2 after the failure of the ARX project. Given growing dissatisfaction with various bugs and limitations with Arthur, testing of what was then known as Arthur 2 was apparently ongoing during 1988 with selected software houses. At this stage, Computer Concepts, who had been prolific developers for the BBC Micro and who had begun software development for the Archimedes, had already initiated a rival operating system project, Impulse, to support their own applications (including the desktop publishing application that would eventually become Impression), stating that Arthur did not meet the "hundreds of requirements" involved including "true multi-tasking". Such an operating system was to be offered free of charge with the planned application packages, but with the release of RISC OS and Computer Concepts acknowledging that RISC OS "overcomes the old problems with Arthur", the applications were to be able to run under either RISC OS or Impulse. Impression was eventually released as a RISC OS application. Ultimately, Arthur 2 was renamed to RISC OS, and was first sold as RISC OS 2.00 in April 1989. The operating system implements co-operative multitasking with some limitations but is not multi-threaded. It uses the ADFS file system for both floppy and hard disc access. It ran from a 512 KB set of ROMs. The WIMP interface offers all the standard features and fixes many of the bugs that had hindered Arthur. It lacks virtual memory and extensive memory protection (applications are protected from each other, but many functions have to be implemented as 'modules' which have full access to the memory). At the time of release, the main advantage of the OS was its ROM; it booted very quickly and while it was easy to crash, it was impossible to permanently break the OS from software. Its high performance was due to much of the system being written in ARM assembly language. The OS was designed with users in mind, rather than OS designers. It is organised as a relatively small kernel which defines a standard software interface to which extension modules are required to conform. Much of the system's functionality is implemented in modules coded in the ROM, though these can be supplanted by more evolved versions loaded into RAM. Among the kernel facilities are a general mechanism, named the callback handler, which allows a supervisor module to perform process multiplexing. This facility is used by a module forming part of the standard editor program to provide a terminal emulator window for console applications. The same approach made it possible for advanced users to implement modules giving RISC OS the ability to do pre-emptive multitasking. A slightly updated version, RISC OS 2.01, was released later to support the ARM3 processor, larger memory capacities, and the VGA and SVGA modes provided by the Acorn Archimedes 540 and Acorn R225/R260. == RISC OS 3 == RISC OS 3 introduced a number of new features, including multitasking Filer operations, applications and fonts in ROM, no limit on number of open windows, ability to move windows off screen, safe shutdown, the Pinboard, grouping of icon bar icons, up to 128 tasks, native ability to read MS-DOS format discs and use named hard discs. Improved configuration was also included, by way of multiple windows to change the settings. RISC OS 3.00 was released with the very earliest version of the A5000 in 1991; it is almo