Emma Worthington
Gerard McCarthy, Robert Marsh, Jenny Mecking, Sybren Drijfhout
PhD confirmation presentation, 27 June 2019
[www.rapid.ac.uk]
Hydrographic sections
1957 to 2004
[Data from Bryden et al., 2005]
RAPID timeseries
2004 to present
[www.rapid.ac.uk]
Other hydrographic data is available prior to 2004 e.g. repeat CTDs, short mooring arrays, but it is not sufficient to estimate AMOC as RAPID does.
Can we simplify the dynamics of the overturning circulation using a linear regression model?
Longworth et al. (2011) used temperature at a depth of 400 dbar at the western boundary as a proxy for thermocline transport.
39 values between 1986 and 1998
Repeat WB CTD stations
155 monthly mean values between 2004 and 2017
RAPID WB profile
Longworth regression model explained 53% of the observed thermocline transport variance
RAPID data regression model explains only 10%
How can it be improved?
Using the temperature anomaly at 780 dbar depth improves explained variance to 33%
A single layer regression model cannot capture the dynamics of the overturning circulation
Isotherms (and isopycnals) slope up to the east above 1000 m, down to the east below
$$ \frac{\partial{\rho}}{\partial{x}} = - \frac{f \rho_0}{g} \frac{\partial{v}}{\partial{z}} $$
EB > WB
WB > EB
=
=
negative shear
positive shear
Southwards above ~800 m and below ~1100 m, with an intermediate northwards layer
Variability in the mid-ocean (geostrophic) AMOC component is defined by partition between two southwards transports:
To capture this variability, at least 3 layers need to be represented by the regression model
Strong correlation between isopycnal displacements and UMO transport on both western (solid) and eastern boundaries (dashed) above 1400 m
Fig. 8, Frajka-Williams et al., 2016
Strong correlation between deep western boundary isopycnal displacements and LNADW transport
Fig. 11, Péréz-Hernández et al., 2015. EB seasonal salinity anomaly (black contours) and density anomaly (coloured contours).
UMO seasonality is driven by eastern boundary density anomalies
Salinity minimum near 1000 m in September associated with stretching of the intermediate layer and increased northwards transport
UMO weakest from Jul-Dec, with peak northwards anomaly Sep-Oct
Chidichimo et al., 2010; Péréz-Hernández et al., 2015
Positive UMO anomaly: weaker southwards recirculation
Negative UMO anomaly: stronger southwards recirculation
At which combination of depths 1–4 do the boundary density anomalies give the highest variance of UMO transport explained by the regression:
$$ UMO = \alpha \dot{}\rho^{1}_{wb} + \beta\dot{}\rho^{2}_{eb} + \gamma\dot{}\rho^{3}_{wb} + \zeta\dot{}\rho^{4}_{wb} $$
$$ UMO = \alpha\dot{}\rho^{740}_{wb} + \beta\dot{}\rho^{1020}_{eb} $$
58% variance explained
SE of regression: 1.90 Sv
$$ UMO = \alpha\dot{}\rho^{740}_{wb} + \beta\dot{}\rho^{1020}_{eb} + \color{#ff7f0e}{\gamma\dot{}\rho^{2840}_{wb}} $$
63% variance explained
SE of regression: 1.77 Sv
$$ UMO = \alpha\dot{}\rho^{680}_{wb} + \beta\dot{}\rho^{900}_{eb} + \gamma\dot{}\rho^{1200}_{wb} + \color{#ff7f0e}{\zeta\dot{}\rho^{4100}_{wb}} $$
70% variance explained
SE of regression: 1.70 Sv
All linear regressions so far have been ordinary least-squares (OLS) models
As they are based on a time series, OLS models fail the following assumptions:
An alternative model is a generalized least-squares with autocorrelated errors (GLSAR) McKinney et al., 2019
The significant partial autocorrelation gives the number of lags
$$ UMO = 38.04 \ \rho_{wb}^{720} - 100.53 \ \rho_{eb}^{880} + 54.83 \ \rho_{wb}^{1300} + 129.05 \ \rho_{wb}^{4100} $$
Explained variance = 73%, SE of regression = 1.35 Sv
Regression model created using first and last 60%, 70%, 80% and 90% of data
Model predicts UMO transport using remaining 40%, 30%, 20% and 10%
| Min | Max | Mean | |
|---|---|---|---|
| Explained variance | 74% | 81% | 77% |
| SE [Sv] | 1.1 | 1.3 | 1.2 |
| Min | Max | Mean | |
|---|---|---|---|
| RMSE [Sv] | 2.1 | 2.8 | 2.3 |
| Percent in PI | 58% | 87% | 73% |
Thermocline [720 dbar]
AAIW [880 dbar]
UNADW [1300 dbar]
LNADW [4100 dbar]
Bryden, H. L., Longworth, H. R., & Cunningham, S. A. (2005). Slowing of the Atlantic meridional overturning circulation at 25°N. Nature, 438(7068), 655–657.
Chidichimo, M. P., Kanzow, T., Cunningham, S. A., Johns, W. E., & Marotzke, J. (2010). The contribution of eastern-boundary density variations to the Atlantic meridional overturning circulation at 26.5°N. Ocean Science, 6(2), 475–490.
Frajka-Williams, E., Meinen, C. S., Johns, W. E., Smeed, D. A., Duchez, A., Lawrence, A. J., … Rayner, D. (2016). Compensation between meridional flow components of the Atlantic MOC at 26°N. Ocean Science, 12(2), 481–493.
Longworth, H. R., Bryden, H. L. and Baringer, M. O. (2011) Historical variability in Atlantic meridional baroclinic transport at 26.5°N from boundary dynamic height observations, Deep-Sea Research Part II (58), 1754–1767.
McKinney, W., Perktold, J., & Seabold, S. (2019). Time Series Analysis in Python with statsmodels.
Pérez-Hernández, M. D., McCarthy, G. D., Vélez-Belchí, P., Smeed, D. A., Fraile-Nuez, E., & Hernández-Guerra, A. (2015). The Canary Basin contribution to the seasonal cycle of the Atlantic Meridional Overturning Circulation at 26°N. Journal of Geophysical Research: Oceans, 120(11), 7237–7252.


I am Mary Kamau a fullstack software developer Am an innovative software developer with more than 1 year of experience in backend software development in PHP , PHP(Laravel), Javascript and Python. I am experienced in building for edtech, e-commerce platforms as well as the hospital systems. I strive to have a positive impact in every team/project I plug into and can also build a product from inception to delivery.
I love listenining to music and exploring our beautiful nature generally am a dendrophile.While am free i love visiting Children Homes.
I love programming because of it's endless applications, you wish for something and programming can made it possible if you have enough resources and skill, second thing I love about programming is that, it build your problem solving skill which increases your creativity, and when you become more creative for a thing, you explore it, you love it, and you dream about it.


At KLS, we produce are a versatile range of enzymes like amylases, proteases, cellulases, xylanase, beta glucanase, glucoamylase and Catalase; using the most sophisticated fermentation technologies. We are India’s largest producer and exporter of industrial enzymes. We sell a complex portfolio of nearly 60+ enzyme products for industries like Textile, Leather, Baking, Alcohol, Brewing, Detergent, Starch and Animal feed.
Research & development department of KLS working on development and improvement. Every year, new products are being launched in the market, which is either completely new type of enzyme or existing enzymes adapted for new applications.
KLSs is in the process to develop some unique new enzymes for the pulp and paper industry where enzymes can be used in the bleaching of pulp or in the de-inking of waste paper for recycling. We shall also be launching new enzymes for the textile and leather industry for applications shall be de-gumming in textile and anti-wrinkle in leather. Apart from these, emphasis is put to develop enzymes for application in food and beverage industries.


|
www.CelebrityMorgue.com
Hermann GoeringHermann Goering, founder of the Gestapo, and the man who ordered Reinhard Heydrich to exterminate the Jews. Goering served as Commander in Chief of the German Air Force, but his main occupation seemed to be looting the occupied territories of their art heritage.
Escaped the HangmanAt the Nuremburg War Crimes Trial, Goering was sentenced to death by hanging. Somehow, he had obtained and used a poison capsule, escaping the hangman. His body was brought out for display by the Allied authorities.
|


System Administrator
Responsible for designing, organizing, modifying, supporting a company's computer systems. Designs and installs LANs, WANs, Internet and intranet systems, and network segments Support LANs, WANs, network segments, Internet, and intranet systems.
Primary Responibilities
- Maintain system efficiency and performance.
- Ensure design of system allows all components to work properly together.
- Troubleshoot problems reported by users.
- Make recommendations for future upgrades.
- Maintain network and system security.
- Analyze and isolate issues pertaining to systems and applications.
- Monitor networks to ensure security and availability to specific users
- Evaluate and modify system's performance.
- Identify user needs.
- Maintain integrity of the network, server deployment, and security.
- Ensure network connectivity throughout enterprise LAN/WAN infrastructure is on par with technical considerations.
- Deploy and configure networks and components.
- Assign configuration of authentication and authorization of directory services.
- Maintain network facilities in individual machines, such as drivers and settings of personal computers as well as printers.
- Maintain network servers such as file servers, VPN gateways, and intrusion detection systems.
- Install and configure computer systems, software applications, security updates and patches.
- System image creation and deployment.
- Administer servers, desktop computers, printers, routers, switches, firewalls, phones, personal digital assistants, and smartphones.
- Implement, operate, and maintain network security devices.
- Work with security engineering team to integrate new capabilities, plan lifecycle replacements, and provide input into the security architecture roadmaps.
- Maintain, configure and troubleshoot Linux based appliances and servers to include McAfee IDS/IPS.
- Create programmatic documentation, standard operating procedures and granular process checklists.
- Manage the functionality and efficiency of a group of computers running on one or more operating systems.
- Maintain the integrity and security of servers and systems.
- Sets up administrator and service accounts.
- Maintain system documentation
- Interact with users and evaluates vendor products.
- Make recommendations to purchase hardware and software, coordinates installation and provides backup recovery.
- Develop and monitor policies and standards for allocation related to the use of computing resources.
- Program in an administrative language.
- Develop and implement testing strategies and document results.
- Provides advice and training to end-users.
- Provides guidance and work leadership to less-experienced staff members.
- Maintains current knowledge of relevant technologies as assigned.
- Participates in special projects as required.
Experience in managing/troubleshooting the following products and services:
- VMware Virtual Infrastructure- ESX Server 4.1 or newer, Virtual Center Server 4.1 or newer, Virtual Client, Virtual Machines
- Windows Environment – Windows 2003/2008/2012 Server. Microsoft Exchange Server 2007 or newer. Microsoft SQL Server 2005 or newer. Microsoft Windows 7 Professional. Experience in managing Microsoft Active Directory Domain; Microsoft Exchange and SMTP Services; Windows System Update Server (WSUS) ; Group Policy management; DHCP.
Understanding and experience in:
- Cisco switches /routers * setup and configuration.
- HTTP/SMTP gateway appliance and filtering devices such as IronPort.
- NETAPP Equipment and Technologies- Snap Mirror, CIFS, NFS
- Virtual Technologies* VMware
- Must have an active Department of Defense Security Clearance
Certifications
- CompTIA A+, Network +, and Security+
- Successful Candidates should have or be able to certify on Microsoft Windows Server 2008 Enterprise Administrator 70-647
Ka’ala Systems Technology Corp. is committed to hiring and retaining a diverse workforce.  For our complete EEO/AA. U.S. Citizenship is required for this position.


| Package | Description |
|---|---|
| org.antlr.v4.runtime | |
| org.antlr.v4.runtime.atn | |
| org.antlr.v4.runtime.misc |
| Modifier and Type | Field and Description |
|---|---|
protected IntervalSet |
DefaultErrorStrategy.lastErrorStates |
| Modifier and Type | Method and Description |
|---|---|
protected IntervalSet |
DefaultErrorStrategy.getErrorRecoverySet(Parser recognizer) |
IntervalSet |
RecognitionException.getExpectedTokens()
Gets the set of input symbols which could potentially follow the
previously matched symbol at the time this exception was thrown.
|
IntervalSet |
Parser.getExpectedTokens()
Computes the set of input symbols which could follow the current parser
state and context, as given by
Recognizer.getState() and Parser.getContext() ,
respectively. |
protected IntervalSet |
DefaultErrorStrategy.getExpectedTokens(Parser recognizer) |
IntervalSet |
Parser.getExpectedTokensWithinCurrentRule() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
DefaultErrorStrategy.consumeUntil(Parser recognizer,
IntervalSet set)
Consume tokens until one matches the given token set.
|
| Modifier and Type | Field and Description |
|---|---|
IntervalSet |
ATNState.nextTokenWithinRule
Used to cache lookahead during parsing, not used during construction
|
IntervalSet |
SetTransition.set |
| Modifier and Type | Method and Description |
|---|---|
IntervalSet[] |
LL1Analyzer.getDecisionLookahead(ATNState s)
Calculates the SLL(1) expected lookahead set for each outgoing transition
of an
ATNState . |
IntervalSet |
ATN.getExpectedTokens(int stateNumber,
RuleContext context)
Computes the set of input symbols which could follow ATN state number
stateNumber in the specified full context . |
IntervalSet |
Transition.label() |
IntervalSet |
SetTransition.label() |
IntervalSet |
RangeTransition.label() |
IntervalSet |
AtomTransition.label() |
IntervalSet |
LL1Analyzer.LOOK(ATNState s,
ATNState stopState,
RuleContext ctx)
Compute set of tokens that can follow
s in the ATN in the
specified ctx . |
IntervalSet |
LL1Analyzer.LOOK(ATNState s,
RuleContext ctx)
Compute set of tokens that can follow
s in the ATN in the
specified ctx . |
IntervalSet |
ATN.nextTokens(ATNState s)
Compute the set of valid tokens that can occur starting in
s and
staying in same rule. |
IntervalSet |
ATN.nextTokens(ATNState s,
RuleContext ctx)
Compute the set of valid tokens that can occur starting in state
s . |
| Modifier and Type | Method and Description |
|---|---|
protected void |
LL1Analyzer._LOOK(ATNState s,
ATNState stopState,
PredictionContext ctx,
IntervalSet look,
Set<ATNConfig> lookBusy,
BitSet calledRuleStack,
boolean seeThruPreds,
boolean addEOF)
Compute set of tokens that can follow
s in the ATN in the
specified ctx . |
| Modifier and Type | Method and Description |
|---|---|
static Transition |
ATNSimulator.edgeFactory(ATN atn,
int type,
int src,
int trg,
int arg1,
int arg2,
int arg3,
List<IntervalSet> sets)
|
protected Transition |
ATNDeserializer.edgeFactory(ATN atn,
int type,
int src,
int trg,
int arg1,
int arg2,
int arg3,
List<IntervalSet> sets) |
| Constructor and Description |
|---|
NotSetTransition(ATNState target,
IntervalSet set) |
SetTransition(ATNState target,
IntervalSet set) |
| Modifier and Type | Field and Description |
|---|---|
static IntervalSet |
IntervalSet.COMPLETE_CHAR_SET |
static IntervalSet |
IntervalSet.EMPTY_SET |
| Modifier and Type | Method and Description |
|---|---|
IntervalSet |
IntervalSet.addAll(IntSet set) |
IntervalSet |
IntervalSet.and(IntSet other)
Return a new
IntSet object containing all elements that are
present in both the current set and the specified set a . |
IntervalSet |
IntervalSet.complement(int minElement,
int maxElement) |
IntervalSet |
IntervalSet.complement(IntSet vocabulary)
Return a new
IntSet object containing all elements that are
present in elements but not present in the current set. |
static IntervalSet |
IntervalSet.of(int a)
Create a set with a single element, el.
|
static IntervalSet |
IntervalSet.of(int a,
int b)
Create a set with all ints within range [a..b] (inclusive)
|
static IntervalSet |
IntervalSet.or(IntervalSet[] sets)
combine all sets in the array returned the or'd value
|
IntervalSet |
IntervalSet.or(IntSet a) |
static IntervalSet |
IntervalSet.subtract(IntervalSet left,
IntervalSet right)
Compute the set difference between two interval sets.
|
IntervalSet |
IntervalSet.subtract(IntSet a) |
static IntervalSet |
Utils.toSet(BitSet bits) |
| Modifier and Type | Method and Description |
|---|---|
static IntervalSet |
IntervalSet.or(IntervalSet[] sets)
combine all sets in the array returned the or'd value
|
static IntervalSet |
IntervalSet.subtract(IntervalSet left,
IntervalSet right)
Compute the set difference between two interval sets.
|
| Constructor and Description |
|---|
IntervalSet(IntervalSet set) |
Copyright © 1992–2021 ANTLR. All rights reserved.


PEINADOS
Here is some more information about this product that is only revealed once clicked on.
FACIALES
Here is some more information about this product that is only revealed once clicked on.
UÑAS
Here is some more information about this product that is only revealed once clicked on.
MAKEUP
Here is some more information about this product that is only revealed once clicked on.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris congue sagittis nisl, vulputate mollis libero efficitur sed.
7 years of experience in coloring. You will be in trusted hands and 10 years of experience in bearding. You will be in trusted hands.
7 years of experience in coloring. You will be in trusted hands and 10 years of experience in bearding. You will be in trusted hands.
7 years of experience in coloring. You will be in trusted hands and 10 years of experience in bearding. You will be in trusted hands.


I Have to Confess I Still Love Pandas 🐼
A few year ago, I was still a Data Scientist, Pandas was a tool that I have to use everyday. Soon time passes and I have used Pandas without googling and seems to forget the struggle I had when I was using Pandas for the first time.
I hope someone can tell me a little bit more when I start using Pandas so I can have a better understanding of it. So here are few things that I will tell my previous self and those of you who are starting to use Pandas.
What about Large Datasets
We all know that Pandas (and Python) is using in memory, and handeling large amount of data is not what it does best. To minimise the problem, we can try a few tricks.
- If you know the type of the csv, try using
dtype
optionl:
pd.read_csv(os.path.join(self.path_movies),
usecols=['movieId', 'title'],
dtype={'movieId': 'int32', 'title': 'str'})
Because we don’t need float64
or int64
(which are the defaults) all the time. This can also minimise the guessing and errors that may follow if the type of the column is input wrongly.
- If it possible, processing in chunks:
chunksize = 10 ** 6
with pd.read_csv(filename, chunksize=chunksize) as reader:
for chunk in reader:
process(chunk)
This can make the io to databases and/or disk better. If you need speed, this can also be converted as concurrent operations, but we are not diving into details here.
What about APIs that are similar or do the exact same things?
One thing about APIs in Pandas is that, there are multiple ways of doing things, like:
- Getting a column:
df.user
vsdf['user']
- Sum, min, max etc:
sum(df)
vsdf.sum()
- Missing values:
isnull
vsisna
The questions is: Which one is better? which one should I use?
Here is my answer (and it is a personal opnion) - For the cases above, I will choose the later over the former. Why? There are reasons:
- Using square brackets (
[]
) to reference a column because there are column names that have spaces in it and it will not work for the.
-
using the numpy defined operation function orver the general Python build in fuction because it is optimise for that task
- using the more commonly used method instead of the less popular ones (or old one) to advoid funciton being depricated
This requires some understanding of the ecosystem of Pandas to make the decision.
What about the nested indexes
Nested indexes is a double edge sward in Pandas in my opnion. In some cases it is good that we can have multiple layers of index and columns but most of the time it just make data science operations more complicated.
As for beginners, some time they maybe taken by supprise that after some operations (like groupby, aggrations and pivot_table etc) will end up with nested columns.
One key thing to remember is, use reset_index()
after those operations. Then nested structures will be flattened and columns will be renamed with the…
How about quick data manipulation
Pandas offers ways to use SQL queries to manipulate the DataFrame, which can be very handy for those who are used to SQL queries and this can also be used to preview what you will get if you have a small sample of a huge data in database as a DataFrame.
Here is my presentation slides:


tarski.world module¶
This module contains all the code for representing the blocks world in Python.
-
class
tarski.world.
Block
(identifier, size, shape, x, y)[source]¶ Bases:
object
Describes a block in the Block World. It has the following attributes, which all have to be set when the block is initialized.
-
identifier
¶ An unique identifier for this block. The creator of the Block must make sure it is unique.
-
shape
¶ The shape of this Block.
-
size
¶ The size of this block
-
x
¶ The x location of this block on the board
-
y
¶ The y location of this block on the board
-
does_adjoin
(other)[source]¶ Tests if this block is next to another block, but not diagonally.
Parameters: other (Block) – The block to test against.
-
identifier
The id that this block was given. Should be unique for a world.
-
in_between
(first, second)[source]¶ Tests if this block lies in between the other two blocks, and if they are all in the same row, column, or diagonal.
Parameters:
-
in_same_column
(other)[source]¶ Tests if this block is in the same column as the other block.
Parameters: other (Block) – The block to test against.
-
in_same_row
(other)[source]¶ Tests if this block is in the same row as the other block.
Parameters: other (Block) – The block to test against.
-
is_back_of
(other)[source]¶ Tests if this block is nearer to the back edge of the grid than other.
Parameters: other (Block) – The block to test against.
-
is_front_of
(other)[source]¶ Tests if this block is nearer to the front edge of the grid than other.
Parameters: other (Block) – The block to test against.
-
is_larger
(other)[source]¶ Tests if this block is larger than the other block.
Parameters: other (Block) – The block to test against.
-
is_left_of
(other)[source]¶ Tests if this block is nearer to the left edge of the grid than other.
Parameters: other (Block) – The block to test against.
-
is_right_of
(other)[source]¶ Tests if this block is nearer to the right edge of the grid than other.
Parameters: other (Block) – The block to test against.
-
-
class
tarski.world.
Shape
[source]¶ Bases:
enum.Enum
Describes the different shapes that an object can have in Tarski’s World.
-
CUBE
= 2¶
-
DODEC
= 3¶
-
DODECAHEDRON
= 3¶
-
TET
= 1¶
-
TETRAHEDRON
= 1¶
-
-
class
tarski.world.
Size
[source]¶ Bases:
tarski.util.OrderedEnum
Describes the different sizes that an object can have. They are sorted so “Small” is the smallest object.
-
LARGE
= 3¶
-
MEDIUM
= 2¶
-
SMALL
= 1¶
-
-
class
tarski.world.
World
(x_size=8, y_size=8)[source]¶ Bases:
object
The world that holds all of the actual blocks. It has the following attributes:
-
x_size
¶ The size of the board in the x direction. Has to be set at initialization. Defaults to 8.
-
y_size
¶ The size of the board in the y direction. Has to be set at initialization. Defaults to 8.
-
domain
¶ A set of blocks that symbolize all the blocks that are in this world. It should not be directly altered.
-
add_block
(size=<Size.MEDIUM: 2>, shape=<Shape.CUBE: 2>, loc=None)[source]¶ Add a new block to this world.
Parameters: Returns: The newly created block
Return type: Raises: ValueError – if the x or y of the block is out of range.
-
add_constant
(name, block)[source]¶ Assign name to block, so name becomes a constant for block. If name is already a constant, its value gets changed.
Parameters: - name (str) – The name to assign to block.
- block (Block) – The block to assign name to.
-
get_constant
(name)[source]¶ Get the block bound to name, or a KeyError is there is none.
Parameters: name (str) – The name for which we want to get the block. Returns: The block assigned to name. Return type: Block
-


The Program
Learn programming while surrounded by global connections, support, and opportunities.
NO UPFRONT COST
You owe us nothing until you get a job.
COLLABORATIVE LEARNING
Learn through pair programming and code reviews.
GLOBAL OPPORTUNITIES
Connect with remote jobs after gaining experience working on a team.
Graduated Students
Paul Rail
CanadaBefore I even finished Microverse, I lost sleep deciding between several great job offers. Calling it a "bootcamp" would be a disservice.
Maya Douglas
Trinidad & TobagoI learned more in 3 weeks than I did in 3 years prior to joining Microverse—not to mention I met people all around the world and became great friends with my coding partner.
Max Li
TaiwanMicroverse helps you stand out from the busy, global bootcamp landscape. It’s the best decision I’ve ever made, and I can’t wait to start my new job!
Paul Rail
CanadaBefore I even finished Microverse, I lost sleep deciding between several great job offers. Calling it a "bootcamp" would be a disservice.
Maya Douglas
Trinidad & TobagoI learned more in 3 weeks than I did in 3 years prior to joining Microverse—not to mention I met people all around the world and became great friends with my coding partner.
Max Li
TaiwanMicroverse helps you stand out from the busy, global bootcamp landscape. It’s the best decision I’ve ever made, and I can’t wait to start my new job!


Link 2
Link 3
Help
Log Out
Continue
Code:
Back
Continue
Username:
Phone
Back
Continue
Password:
Forgot password
Reset password:
Reset password
Back
Continue
☰
Booking
Prices
Confirmation
Submit
Cab
$
Get
100sec
×


Hi,
I'm new to the forums so apologies if this has been answered before but I've done a search and can't find anything on this topic...
I'm considering buying a kit to build a Solar PV monitor and I wondered if there is any advantage or disadvantage to choosing 433 or 868Mhz? I'm aware that 433 band may be more congested than 868 but that's less of an issue as I'm in a fairly isolated location so probably only my devices in use anyway - and I don't currently have that many (that I know of).
I currently have two existing wireless energy monitors and the signal from one seems to go through the walls far better than the other. Don't know what frequencies they use but if 433 or 868 has a better signal strength I'd prefer to know which.
Also, I have some "professional" wireless alarm gear that uses 868 (digitally encrypted signals apparently). It can detect "jamming" but I presume as long as the OpenEnergyMonitor wasn't transmitting constantly I presume there wouldn't be any conflicts? I did some Googling on that and discovered that there's some sort of regulation that devices using 868 should never transmit for more than a few milliseconds per second anyway?
Anyway, any advice on pros/cons of choosing 433 over 868 would be appreciated.
Thanks.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
We have never noticed a difference in range. I think due to physics the greater the frequency the better the penetration. All devices on the ISM bands should only transmit for a few mS. We have not had much experience using the OEM system in areas with busy RF's. Most of our deployments so far have been quite rural.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Hi.
I've been searching here and I couldn't find any order of magnitude for the range of the RF link between emonTX and emonBase, be it here, or there, for instance.
What kind of range can you expect ? Could this be a concern in big buildings, or large houses with thick concrete walls ?
Thanks for any feedback.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Take a look here: http://jeelabs.net/projects/cafe/wiki/FAQ
Note also that you should be able to improve the range by reducing the bit rate. There's been a recent
discussionmention about this, sorry but I can't find it just now.here: http://openenergymonitor.org/emon/node/1535#comment-8237Re: Does 433Mhz or 868Mhz have better distance/penetration?
For the specific example we are talking about, lower frequency equals better penetration. See page 43 here:
http://www.telit.com/module/infopool/download.php?id=3636
Not sure you would notice the difference in your average house though. Might depend more on what the neighbours are using. The variables are many from what I can tell.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
CAUTION: That data sheet is NOT for the RFM12B module!
Though the table of losses will apply, it is still necessary to take antenna performance into account to get any sort of estimate of the reliable range - and I cannot recollect seeing that for the RFM12B.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Hi.
Thank you guys for these answers. I was concerned about the transmission in a house through several walls and ceilings. I guess it's generally fine.
Besides, lowering the bitrate should not be an issue when monitoring a house : most measured values are quite low-freq and you don't need thousands of samples by second (unless you are really interested in electricity peak consumption, maybe).
Re: Does 433Mhz or 868Mhz have better distance/penetration?
I discovered the range improvement with lower bit rate after replacing a Maplin monitor with emon. Both systems use a version of the RFM12 module but the Maplin system had far greater range so I disassembled the PIC code in the Maplin transmitter and found that the only difference was the bit rate. That's how I ended up with the odd value of 3.918kb/s, it was the value used in the Maplin unit. I didn't take this further to see if lowering the bit rate even more would increase the range since this was enough for my house.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Does slowing down transmission also improve the reliability (so ACK's won't be necessary) ?
Maybe interesting to do some more range/reliability tests with this. OEM packets are so small transmission speed isn't an issue here (according to me).
Re: Does 433Mhz or 868Mhz have better distance/penetration?
The maximum packet size is 75 bytes (66 bytes of payload plus header and crc), and I think I've read somewhere that any one transmitter must not hog the channel for more than 1% of the time (on the 868 MHz band). So at 4 kb/s, one max-sized packet occupies the channel for 150 ms, so one full-sized packet every 15 s - sounds good enough to me.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Is it 4 kilobytes/s or 4 kilobits/s?
Re: Does 433Mhz or 868Mhz have better distance/penetration?
bits
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Just checked the regs for the 433MHz band and they allow a 10% transmit duty cycle so no legal issue there.
The 868MHz rules are much more complicated but seem to be either 0.1% or 1%
document is here if anyone wants to check for themselves....
http://stakeholders.ofcom.org.uk/binaries/spectrum/spectrum-policy-area/...
Re: Does 433Mhz or 868Mhz have better distance/penetration?
B/s = bytes per second, b/s = bits/second. (B is bigger than b !). No, I don't like it either, but that's the way it seems to be done.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
@MartinR:
Lowering the bitrate will in essence reduce the required RF-signal bandwidth .
The range improvement is due to the fact that available RF-power is divided on the bandwidth. (A narrow signal will travel further than a broader one, if the power is constant.)
If you need (or want) both power and bandwidth to be untouched, you'll have to change antenna.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Hi all.
I'm experiencing range issues.
I get a nice connection inside my house, even if the signal has to cross brick walls. However, when it is in or close to the gas meter box outside the house, the base (Raspberry Pi) doesn't get its signal, although it's only a wooden garage door, a caravan, and a not so dense hedge to cross (Unbelievably, it even works just before I cross the hedge... actually it works pretty much everywhere, except where I need it to...). It can cross a longer distance if moving aside to avoid the caravan and the hedge (but moving the caravan or the meter box is not an option).
I suspect the cold affects the battery and I'm working on this (in another thread), but in the meantime, I'm following other leads. Besides, I'm not sure only the temperature matters because it also fails even if it's been moved out of the house a minute ago.
It used to work, though, and I don't know what changed since, apart from the temperature. And it sometimes work but with a log of missed frames. I don't think I can quantify this any better, but obviously, I'm reaching the limits of the range.
Antenna
I remember that I broke the end of the RF cable on the RFM2Pi board or on the TX. I had to cut a few millimeters and solder it back on. Does that matter ? I mean does the antenna length precision matter that much ?
Bitrate
Back to this thread's topic. I'd like to try lowering the bitrate.
On the TX side.
I modify the jeelib library. In RF12.cpp, in function rf12_initialize, I modify line
into
(BTW, I don't know why they're not using the constants defined in RF12.h.)
Now I don't get anything, but I think it is because both the TX and the base need to use the same bitrate. Seems obvious, but if anyone can confirm...
On the emonBase side.
I'm using RFM2Piv1, so it seems I'd need to get myself an ISP programmer to reflash the ATTiny... I guess I'd be better off buying an RFM2Piv2 that can be reprogrammed through the Pi.
Power
Apparently, the output power is already set to its maximum:
For anyone interested, I got the datasheet and programming guide here: http://www.hoperf.com/rf/fsk_module/RFM12B.htm
Is anyone else experiencing range issues ? My range is surprisingly bad. There must be a reason. It's very frustrating.
Did anybody try to lower the bitrate already ?
Re: Does 433Mhz or 868Mhz have better distance/penetration?
it's not necessary (or advisable) to change the jeelib library, you can set the baud, or any other parameter, within your sketch like this....
rf12_initialize(nodeID, freq, networkGroup); // initialize RF
rf12_control(0xc657); // approx. 3.918kps, i.e. 10000/29(1+0x57) kps
but, as you say, you obviously need to change both the transmitter and the receiver.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Great, thanks Martin for the tip.
Perhaps could you consider adding this as a parameter to the RFM2Pi board. Just like you have b4 for the band, you could have, say, r3 for bit rate = RF_DATA_RATE_3.
I believe the new RFM2Pi is less of a pain to program, but it's even better not to reprogram at all.
Or perhaps is it useless and everyone is happy with the default.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Perhaps could you consider adding this as a parameter to the RFM2Pi board. Just like you have b4 for the band, you could have, say, r3 for bit rate = RF_DATA_RATE_3.
Wrong Martin Jérôme, the RFM2Pi board is Martin Harizanov's project, I'm Martin Roberts. I am however running an RFM12Piv1 (and all my other nodes) at 3918 baud as it's the only way I can get the range I need.
I've attached the ATTiny hex file in case you want to give it a try.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
In general (and contrary to the first old response) penetration / distance decreases with increasing frequency.
Lowering the bitrate also increases penetration, as does using an antenna with higher gain, or sending with more power.
Antenna length is not very critical, but its orientation is. You may try rotating the wire or device with its antenna pointing to the receiver or to the sky, and do the same at the receiving side.
You should also see if connecting the ground to your gas meter helps. Any large metal object in the vicinity of sender/receiver can have adverse (or positive) effects. And pointing the antenna the opposite direction of the gas meter. And moving the sender 1/4 or 1/2 wavelength from the gas meter.
Another alternative is to replace the "wire antenna" with a better one. 1/4" whip with a magnetic base could help. Some are delivered with a 3m coax cable, so it could help you to find a "better" spot for the antenna.
I personally had quite a poor experience at 868MHz (but at 38kHz, maybe I should reduce it). One concrete wall/one floor is OK, but 2 floors becomes problematic. Maybe because my floor heating is using a metal grid (Faraday cage)...
Disclaimer : My HW is a bit different, I use panstamps, not RFM12b.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Jerome: I remember that I broke the end of the RF cable on the RFM2Pi board or on the TX. I had to cut a few millimeters and solder it back on. Does that matter ? I mean does the antenna length precision matter that much ?
That same question was asked a while ago here. I think the outcome was that having the correct length of wire for the aerial is definitely a good idea, but the degree of improvement is difficult to predict.
Using a proprietory aerial would ensure that the effective length is correct, although there is still the difficulty of making low-loss connections at the RF chip and bulkhead, as has been well discussed. An effective ground plane can also make a significant improvement to the range that can be obtained.
Re: Does 433Mhz or 868Mhz have better distance/penetration?
Right Martin, I was confused with the other Martin.
I should be able to borrow an ISP programmer and hopefully try a lower baud rate soon.
I can also try to "orient" the antenna. It used to work in the same position, so I assume the antenna must have moved a bit.
Thanks for those informations.


Education
Northeastern University
Master of Science in Computer Science
01/2021 - Present
Course Taken
Algorithms, Web Development
University of California, San Diego
Master of Science in Electronic Engineering
09/2018 - 12/2020
Course Taken
Statistic Learning, Convex Optimization,
Random Process, Linear Algebra, Operating Systems, Computer Networks, Probability Theory, Computer Vision
University of Electronic Science and Technology of China
Bachelor of Engineering in Internet of Things
09/2015 - 6/2019
Course Taken
Calculus, Signal and Systems, Coding Theory,
Communication Theory, Principle of Random Signals, Wireless Sensor Network, Computer Communication Network


Parkmobile, LLC • 1100 Spring Street NW, Suite 200, Atlanta, GA 30309
The contents and elements of this email are protected by the US and
international copyright and trademark laws. Nothing contained in this email
modifies, supplements, or replaces, in any way, the Terms of Use for the app
or any provision therein. With respect to the app, nothing in this email
creates a warranty or representation about the performance, functionality,
or other matters. Our Terms of Use are found on our website at
http://us.parkmobile.com/terms-use.
To stop receiving these types of email messages,
click this link.
To stop receiving ALL notification emails sent by Parkmobile,
click this link.


Activities
Home
Activities
Contact Us
Pictures
So many choices for activities!
Volleyball
Beach Soccer
Boat Rides
Fine Dining


Blend of yummy vanilla ice cream mixed with citrus fruit Extract and topped with caramel syrup)
Blend of yummy strawberry ice-cream mixed with strawberry crush and topped with caramel syrup
Blend of yummy Chocolate ice-cream mixed with chocolate syrup and topped with chocolate syrup
Blend of yummy Butterscotch ice-cream mixed with Butterscotch crush and topped with caramel syrup
Blend of yummy Mango ice-cream mixed with Mango crush and topped with Strawberry syrup
Blend of yummy vanilla ice cream Mixed with finely diced Almonds powder topped with caramel syrup
Blend of yummy vanilla ice cream Mixed with Litchi crush topped with caramel syrup.
600Ml
1Ltr,500Ml


ASAP-IReS platform
Datasets
Abstract Operators
Materialized Operators
Abstract Workflows
Materialized Workflows
Execution
Cockpit


OPEC (Code: OPEC)
Organization of the Petroleum Exporting Countries (OPEC) is international organization and economic cartel overseeing policies of oil-producers.


The following table is sortable, just click on the headers (click twice to reverse the sort order).
You can show/hide the various types of XEPs by checking/unchecking the checkboxes below.
Number
Name
Type
Status
Date
{{ if .Site.Data.xeplist }}
{{ range sort .Site.Data.xeplist ".number" }}
{{ $number_str := printf "%04g" .number }}


Home
Login
Register
Home
My Messages
Archive (Sent)
Send Message
Logout
Welcome, {user}!
Loading ...
Info
Error
Welcome
Welcome to our messaging system.
Please login
Username:
Password:
Please register here
Username:
Password:
Name:
Welcome, {user}!
My Messages
Send Message
Archive (Sent)
My Messages
Archive (Sent Messages)
Send Message
Recipient:
Message Text:


LSystemRule
public class LSystemRule
A rule that describes in what each element in the L-System is transformed into
-
A typealias for the function that checks the parameter from an
LSystemElement
Declaration
Swift
public typealias ParameterCheck = ((_ parameters: [String : Any]) -> Bool)?
-
A typealias for the function that checks the context from a
LSystemRuleContextAwareSource
and the index of the element that is being evaluatedDeclaration
Swift
public typealias ContextAwareCheck = ((_ source: LSystemRuleContextAwareSource, _ index: Int) -> Bool)?
-
The input that this rule applies to
Declaration
Swift
public let input: String
-
The outputs this rule generates
Declaration
Swift
public let outputs: [String]
-
The weight of this rule in the L-System
Declaration
Swift
public let weight: Double
-
The function used to check if this rule is valid for a given input element
Declaration
Swift
public let parameterCheck: ParameterCheck
-
The function used to check if this rule is valid for the current result context (iterations, string)
Declaration
Swift
public let contextAwareCheck: ContextAwareCheck
-
Creates a new rule based on an input and output
Declaration
Swift
public convenience init(input: String, output: String)
Parameters
input
The input that this rule applies to
output
The output this rule generates
-
Creates a new rule based on an input and outputs
Declaration
Swift
public convenience init(input: String, outputs: [String])
Parameters
input
The input that this rule applies to
outputs
The outputs this rule generates
-
Creates a new rule based on an input, an output and a weight
Declaration
Swift
public convenience init(input: String, output: String, weight: Double) throws
Parameters
input
The input that this rule applies to
output
The output this rule generates
weight
The weight this rule should have
-
Creates a new rule based on an input, outputs and a weight
Declaration
Swift
public convenience init(input: String, outputs: [String], weight: Double) throws
Parameters
input
The input that this rule applies to
outputs
The outputs this rule generates
weight
The weight this rule should have
-
Creates a new rule based on an input, an output, a weight and a parameter check
Declaration
Swift
public convenience init(input: String, output: String, weight: Double, parameterCheck: ParameterCheck) throws
Parameters
input
The input that this rule applies to
output
The output this rule generates
weight
The weight this rule should have
parameterCheck
The function used to check if this rule is valid for a given input element
-
Creates a new rule based on an input, outputs, a weight and a parameter check
Declaration
Swift
public convenience init(input: String, outputs: [String], weight: Double, parameterCheck: ParameterCheck) throws
Parameters
input
The input that this rule applies to
outputs
The outputs this rule generates
weight
The weight this rule should have
parameterCheck
The function used to check if this rule is valid for a given input element
-
Creates a new rule based on an input, an output, a weight and a context-aware check
Declaration
Swift
public convenience init(input: String, output: String, weight: Double, contextAwareCheck: ContextAwareCheck) throws
Parameters
input
The input that this rule applies to
output
The output this rule generates
weight
The weight this rule should have
contextAwareCheck
The function used to check if this rule is valid for the current result context (iterations, string)
-
Creates a new rule based on an input, an output, a weight and a context-aware check
Declaration
Swift
public convenience init(input: String, outputs: [String], weight: Double, contextAwareCheck: ContextAwareCheck) throws
Parameters
input
The input that this rule applies to
outputs
The outputs this rule generates
weight
The weight this rule should have
contextAwareCheck
The function used to check if this rule is valid for the current result context (iterations, string)
-
Creates a new rule based on an input, an output, a weight, a parameter check and a context-aware check
Declaration
Swift
public convenience init(input: String, output: String, weight: Double, parameterCheck: ParameterCheck, contextAwareCheck: ContextAwareCheck) throws
Parameters
input
The input that this rule applies to
output
The output this rule generates
weight
The weight this rule should have
parameterCheck
The function used to check if this rule is valid for a given input element
contextAwareCheck
The function used to check if this rule is valid for the current result context (iterations, string)
-
Creates a new rule based on an input, outputs, a weight, a parameter check and a context-aware check
Declaration
Swift
public init(input: String, outputs: [String], weight: Double, parameterCheck: ParameterCheck, contextAwareCheck: ContextAwareCheck) throws
Parameters
input
The input that this rule applies to
outputs
The outputs this rule generates
weight
The weight this rule should have
parameterCheck
The function used to check if this rule is valid for a given input element
contextAwareCheck
The function used to check if this rule is valid for the current result context (iterations, string)
-
Checks if a rule is valid given an input element
Declaration
Swift
public func isValid(forInputElement inputElement: LSystemElement, elementIndex: Int, contextAwareComponentSource: LSystemRuleContextAwareSource? = nil) -> Bool
Parameters
inputElement
The input element to use in the validation
elementIndex
The index of the input element
contextAwareComponentSource
The source that the context-aware check should be used
Return Value
Returns
true
if the rule is valid. Returnsfalse
if not. -
Applies the rule given an input element
Declaration
Swift
public func apply(inputElement: LSystemElement) -> [LSystemElement]
Parameters
inputElement
The element used to apply the rule
Return Value
The outputs generated
-
Applies the rule given an input element and a list of transitions
Declaration
Swift
public func apply(inputElement: LSystemElement, transitions: [LSystemParametersTransition]) -> [LSystemElement]
Parameters
inputElement
The element used to apply the rule
transitions
The transitions the rule should use when generating the outputs
Return Value
The outputs generated


@(poll: Poll, choices: Seq[Choice], targets: Seq[String], ownerUser: User, user: Option[User], userResponse: Option[Response], currentUrl: String)(implicit token: play.filters.csrf.CSRF.Token) @import helper._ @metaTags(poll: Poll, choices: Seq[Choice], ownerName: String, ownerTwitterHandle: String, ownerTwitterId: String, currentUrl: String) = { } @initData = { } @choicesRadioButton(choice: Choice, userResponse: Option[Response]) = { @if(userResponse.isDefined && userResponse.get.choiceId == choice.id.get) { } else { } } @tweetYourAnswer(status: String, cta: String) = { @if( user.isDefined ){
} } @tweetText = { @if(targets.equals(Nil)) { I just answered a question on #politickle. You can do it too! @currentUrl } else { I just answered a question posed to @targets.mkString(" and ") on #politickle. You can do it too! @currentUrl } } @tweetQuestionText = { @if(targets.equals(Nil)) { I would like you to answer a question that I created on #politickle. @currentUrl } else { I just created a question on #politickle for @targets.mkString(" and "). Would you like to answer? @currentUrl } } @layout(title=poll.description, headContent=metaTags(poll, choices, ownerUser.twitterName, ownerUser.twitterHandle.get, ownerUser.twitterId, currentUrl), initData=initData) { @if( userResponse.isDefined ) {


Game Settings
Click on the links below to configure game related settings or administrate
the games.
Clicking on the title of a game will let you enable or disable the game and its
widgets.
{% for app, enabled, pk, models in MAKAHIKI_DEVELOPER_GAME_MODELS %}
{% if enabled %}
{% for model in models %}
|
|
|
|
{% endfor %}
{% endif %}
{% endfor %}


Since our founding in 2002, Ashesi has established a reputation as a leader in undergraduate education in Africa, with an educational experience that fosters ethical leadership, an entrepreneurial mindset and the ability to solve complex problems. These qualities are what set Ashesi students and alumni apart. Across various industries today, Ashesi graduates are highly sought, and over 90% have stayed to work for progress in Africa. At the heart of the Ashesi experience is our interdisciplinary core curriculum, and our campus culture. Ashesi students come from 24 countries across the globe to learn, live and innovate together; almost half are on scholarships, and 48% are women. On campus, these students join with faculty and Ashesi leadership on a shared mission to transform the African continent.
Our Mission
To educate ethical, entrepreneurial leaders in Africa; to cultivate within students, the critical thinking skills, concern for others, and the courage it will take to transform our continent.
The Ashesi Way
-- the principles that define us
Degree Programs:
Basically, It's lit sometimes. Be there or be square.


Condition Functions
You can use intrinsic functions, such as Fn::If
, Fn::Equals
, and
Fn::Not
, to conditionally create stack resources. These conditions are
evaluated based on input parameters that you declare when you create or update a stack.
After
you define all your conditions, you can associate them with resources or resource
properties
in the Resources and Outputs sections of a template.
You define all conditions in the Conditions section of a template except for
Fn::If
conditions. You can use the Fn::If
condition in the metadata
attribute, update policy attribute, and property values in the Resources section and
Outputs
sections of a template.
You might use conditions when you want to reuse a template that can create resources
in
different contexts, such as a test environment versus a production environment. In
your
template, you can add an EnvironmentType
input parameter, which accepts either
prod
or test
as inputs. For the production
environment, you might include Amazon EC2 instances with certain capabilities; however,
for the test
environment, you want to use less capabilities to save costs. With conditions, you
can define
which resources are created and how they're configured for each environment type.
For more information about the Conditions section, see Conditions.
Note
You can only reference other conditions and values from the Parameters and Mappings sections of a template. For example, you can reference a value from an input parameter, but you cannot reference the logical ID of a resource in a condition.
Associating a Condition
To conditionally create resources, resource properties, or outputs, you must associate
a
condition with them. Add the Condition:
key and the logical ID of the condition as
an attribute to associate a condition, as shown in the following snippet. AWS CloudFormation
creates the
NewVolume
resource only when the CreateProdResources
condition
evaluates to true.
Example JSON
"NewVolume" : { "Type" : "AWS::EC2::Volume", "Condition" : "CreateProdResources", "Properties" : { "Size" : "100", "AvailabilityZone" : { "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ]} }
Example YAML
NewVolume: Type: "AWS::EC2::Volume" Condition: CreateProdResources Properties: Size: 100 AvailabilityZone: !GetAtt EC2Instance.AvailabilityZone
For the Fn::If
function, you only need to specify the condition name. The following snippet shows
how to use Fn::If
to conditionally specify a resource property. If the CreateLargeSize
condition is true, AWS CloudFormation sets the volume size to 100
. If the condition is false, AWS CloudFormation sets the volume size to 10
.
Example JSON
"NewVolume" : { "Type" : "AWS::EC2::Volume", "Properties" : { "Size" : { "Fn::If" : [ "CreateLargeSize", "100", "10" ]}, "AvailabilityZone" : { "Fn::GetAtt" : [ "Ec2Instance", "AvailabilityZone" ]} }, "DeletionPolicy" : "Snapshot" }
Example YAML
NewVolume: Type: "AWS::EC2::Volume" Properties: Size: !If [CreateLargeSize, 100, 10] AvailabilityZone: !GetAtt: Ec2Instance.AvailabilityZone DeletionPolicy: Snapshot
You can also use conditions inside other conditions. The following snippet is from
the
Conditions
section of a template. The MyAndCondition
condition
includes the SomeOtherCondition
condition:
Example JSON
"MyAndCondition": { "Fn::And": [ {"Fn::Equals": ["sg-mysggroup", {"Ref": "ASecurityGroup"}]}, {"Condition": "SomeOtherCondition"} ] }
Example YAML
MyAndCondition: !And - !Equals ["sg-mysggroup", !Ref "ASecurityGroup"] - !Condition SomeOtherCondition
Fn::And
Returns true
if all the specified conditions evaluate to true, or returns false
if any one of the conditions evaluates to false. Fn::And
acts as an AND operator. The minimum number of conditions that you can include is
2, and the maximum is 10.
Declaration
JSON
"Fn::And": [{
condition
}, {...
}]
YAML
Syntax for the full function name:
Fn::And: [
condition
]
Syntax for the short form:
!And [
condition
]
Parameters
condition
-
A condition that evaluates to
true
orfalse
.
Example
The following MyAndCondition
evaluates to true if the referenced security group name is equal to sg-mysggroup
and if SomeOtherCondition
evaluates to true:
JSON
"MyAndCondition": { "Fn::And": [ {"Fn::Equals": ["sg-mysggroup", {"Ref": "ASecurityGroup"}]}, {"Condition": "SomeOtherCondition"} ] }
YAML
MyAndCondition: !And - !Equals ["sg-mysggroup", !Ref ASecurityGroup] - !Condition SomeOtherCondition
Fn::Equals
Compares if two values are equal. Returns true
if the two values are equal or false
if they aren't.
Declaration
JSON
"Fn::Equals" : ["
value_1
", "value_2
"]
YAML
Syntax for the full function name:
Fn::Equals: [
value_1
,value_2
]
Syntax for the short form:
!Equals [
value_1
,value_2
]
Parameters
value
-
A value of any type that you want to compare.
Example
The following UseProdCondition
condition evaluates to true if the value for the EnvironmentType
parameter is equal to prod
:
JSON
"UseProdCondition" : { "Fn::Equals": [ {"Ref": "EnvironmentType"}, "prod" ] }
YAML
UseProdCondition: !Equals [!Ref EnvironmentType, prod]
Fn::If
Returns one value if the specified condition evaluates to true
and another
value if the specified condition evaluates to false
. Currently, AWS CloudFormation supports
the Fn::If
intrinsic function in the metadata attribute, update policy attribute,
and property values in the Resources section and Outputs sections of a template. You
can use
the AWS::NoValue
pseudo parameter as a return value to remove the corresponding
property.
Declaration
JSON
"Fn::If": [
condition_name
,value_if_true
,value_if_false
]
YAML
Syntax for the full function name:
Fn::If: [
condition_name
,value_if_true
,value_if_false
]
Syntax for the short form:
!If [
condition_name
,value_if_true
,value_if_false
]
Parameters
condition_name
-
A reference to a condition in the Conditions section. Use the condition's name to reference it.
value_if_true
-
A value to be returned if the specified condition evaluates to
true
. value_if_false
-
A value to be returned if the specified condition evaluates to
false
.
Examples
To view additional samples, see Sample Templates.
Example 1
The following snippet uses an Fn::If
function in the SecurityGroups
property for an Amazon EC2 resource. If the CreateNewSecurityGroup
condition evaluates to true, AWS CloudFormation uses the referenced value of NewSecurityGroup
to specify the SecurityGroups
property; otherwise, AWS CloudFormation uses the referenced value of ExistingSecurityGroup
.
JSON
"SecurityGroups" : [{ "Fn::If" : [ "CreateNewSecurityGroup", {"Ref" : "NewSecurityGroup"}, {"Ref" : "ExistingSecurityGroup"} ] }]
YAML
SecurityGroups: - !If [CreateNewSecurityGroup, !Ref NewSecurityGroup, !Ref ExistingSecurityGroup]
Example 2
In the Output section of a template, you can use the Fn::If
function to conditionally output information. In the following snippet, if the CreateNewSecurityGroup
condition evaluates to true, AWS CloudFormation outputs the security group ID of
the NewSecurityGroup
resource. If the condition is false, AWS CloudFormation outputs the security group
ID of the ExistingSecurityGroup
resource.
JSON
"Outputs" : { "SecurityGroupId" : { "Description" : "Group ID of the security group used.", "Value" : { "Fn::If" : [ "CreateNewSecurityGroup", {"Ref" : "NewSecurityGroup"}, {"Ref" : "ExistingSecurityGroup"} ] } } }
YAML
Outputs: SecurityGroupId: Description: Group ID of the security group used. Value: !If [CreateNewSecurityGroup, !Ref NewSecurityGroup, !Ref ExistingSecurityGroup]
Example 3
The following snippet uses the AWS::NoValue
pseudo parameter in an Fn::If
function. The condition uses a snapshot for an Amazon RDS DB instance only if a snapshot
ID is provided. If the UseDBSnapshot
condition evaluates to true, AWS CloudFormation uses the DBSnapshotName
parameter value for the DBSnapshotIdentifier
property. If the condition evaluates to false, AWS CloudFormation removes the DBSnapshotIdentifier
property.
JSON
"MyDB" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "AllocatedStorage" : "5", "DBInstanceClass" : "db.m1.small", "Engine" : "MySQL", "EngineVersion" : "5.5", "MasterUsername" : { "Ref" : "DBUser" }, "MasterUserPassword" : { "Ref" : "DBPassword" }, "DBParameterGroupName" : { "Ref" : "MyRDSParamGroup" }, "DBSnapshotIdentifier" : { "Fn::If" : [ "UseDBSnapshot", {"Ref" : "DBSnapshotName"}, {"Ref" : "AWS::NoValue"} ] } } }
YAML
MyDB: Type: "AWS::RDS::DBInstance" Properties: AllocatedStorage: 5 DBInstanceClass: db.m1.small Engine: MySQL EngineVersion: 5.5 MasterUsername: !Ref DBUser MasterUserPassword: !Ref DBPassword DBParameterGroupName: !Ref MyRDSParamGroup DBSnapshotIdentifier: !If [UseDBSnapshot, !Ref DBSnapshotName, !Ref "AWS::NoValue"]
Example 4
The following snippet provides an auto scaling update policy only if the RollingUpdates
condition evaluates to true. If the condition evaluates to false, AWS CloudFormation
removes the AutoScalingRollingUpdate
update policy.
JSON
"UpdatePolicy": { "AutoScalingRollingUpdate": { "Fn::If": [ "RollingUpdates", { "MaxBatchSize": "2", "MinInstancesInService": "2", "PauseTime": "PT0M30S" }, { "Ref" : "AWS::NoValue" } ] } }
YAML
UpdatePolicy: AutoScalingRollingUpdate: !If - RollingUpdates - MaxBatchSize: 2 MinInstancesInService: 2 PauseTime: PT0M30S - !Ref "AWS::NoValue"
Fn::Not
Returns true
for a condition that evaluates to false
or
returns false
for a condition that evaluates to true
.
Fn::Not
acts as a NOT operator.
Declaration
JSON
"Fn::Not": [{
condition
}]
YAML
Syntax for the full function name:
Fn::Not: [
condition
]
Syntax for the short form:
!Not [
condition
]
Parameters
condition
-
A condition such as
Fn::Equals
that evaluates totrue
orfalse
.
Example
The following EnvCondition
condition evaluates to true if the value for
the EnvironmentType
parameter is not equal to prod
:
JSON
"MyNotCondition" : { "Fn::Not" : [{ "Fn::Equals" : [ {"Ref" : "EnvironmentType"}, "prod" ] }] }
YAML
MyNotCondition: !Not [!Equals [!Ref EnvironmentType, prod]]
Fn::Or
Returns true
if any one of the specified conditions evaluate to true, or
returns false
if all of the conditions evaluates to false. Fn::Or
acts as an OR operator. The minimum number of conditions that you can include is 2,
and the
maximum is 10.
Declaration
JSON
"Fn::Or": [{
condition
}, {...
}]
YAML
Syntax for the full function name:
Fn::Or: [
condition, ...
]
Syntax for the short form:
!Or [
condition, ...
]
Parameters
condition
-
A condition that evaluates to
true
orfalse
.
Example
The following MyOrCondition
evaluates to true if the referenced security
group name is equal to sg-mysggroup
or if SomeOtherCondition
evaluates to true:
JSON
"MyOrCondition" : { "Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Condition" : "SomeOtherCondition"} ] }
YAML
MyOrCondition: !Or [!Equals [sg-mysggroup, !Ref ASecurityGroup], Condition: SomeOtherCondition]
Supported Functions
You can use the following functions in the Fn::If
condition:
-
Fn::Base64
-
Fn::FindInMap
-
Fn::GetAtt
-
Fn::GetAZs
-
Fn::If
-
Fn::Join
-
Fn::Select
-
Fn::Sub
-
Ref
You can use the following functions in all other condition functions, such as
Fn::Equals
and Fn::Or
:
-
Fn::FindInMap
-
Ref
-
Other condition functions


RSS Wallpaper is the best way to get cool new images on your device every day. Looking for a new wallpaper? RSS Wallpaper can set a new one every day. Want to set up an awesome screensaver? RSS Wallpaper can download images to your device or SD card for you to use as a source for your slideshow. And if you're concerned about the storage space on your device, RSS Wallpaper can compress new photos before they're downloaded and purge old ones once they're no longer in use


Meet “Inclusive Components”, A New Printed Book By Heydon Pickering
Exploring New Ways To Manage Content In WordPress
Writing A Multiplayer Text Adventure Engine In Node.js: Adding Chat Into Our Game
This is the final part of a series on how to create your own multiplayer text adventure engine. Today, we’ll focus on adding chat support to the text client from. We’ll go through the basic design of a chat server using Node.js and socket.io, …
Smashing Podcast Episode 2 With Liz Elcoate: What’s So Great About Freelancing?
What does it mean to be a freelance designer or developer? In this episode of the Smashing Podcast, Drew McLellan talks to experienced freelance brand designer Liz Elcoate to find out more.
Build A Seamless Spreadsheet Import Experience With The Help Of Flatfile.io
In this article, we’re going to look at how Flatfile helps you create a better import experience for your users, team and product.
1,620 smashing members
A friendly community that keeps this website alive. With books, webinars, discounts and networking — for just 1 coffee a month. Join the family.
Already have an account? Sign in!
Creating Online Environments That Work Well For Older Users
A significant part of the Internet-using population is aged 50 or older — including the people who invented it. Designers need to understand what older users need and why it’s not enough to just say, “I can read it, so what’s the …
Things We Can’t (Yet) Do In CSS
In this article, Rachel Andrew looks at some common layout patterns that we can’t yet do on the web and the CSS Specifications that might let us achieve them in the future.
Signs Your Website Feels More Like A Haunted House Than A Welcoming Home
What is it that makes a haunted house feel so disturbing? Is it the fact that it’s been long abandoned? That it’s riddled with dark and twisty hallways? That it simulates danger? Or maybe it’s the low-quality construction that makes people nervous? …
Creativity Sparks Shining Through The Fog (November 2019 Wallpapers Edition)
In many parts of the world, November is a rather gray month, so what better way could there be to start it off as with some colorful inspiration?
New on Smashing TV
A friendly community that keeps this website alive. With books, webinars, discounts and networking — for just 1 coffee a month. Join the family.
Already have an account? Sign in!
Meet “Inclusive Components”: From Buttons to Modals.
Our new practical book on building accessible and robust interfaces. From accordions and buttons to modals and tables. With bulletproof code samples. Written by Heydon Pickering.
Ire Aderinokun is a self-taught Front-End Developer and User Interface Designer from Lagos, Nigeria. She is currently the co-founder, COO, and VP Engineering of BuyCoins, a cryptocurrency exchange for Africa, and previously worked with eyeo, the company behind products like Adblock Plus and Flattr Plus. Ire is a Google Expert, specializing in the core front-end technologies HTML, CSS, and JavaScript, but is passionate about all aspects of technology. She writes about these topics on her blog and regularly shares her knowledge speaking at conferences around Africa and the world. Thank you for everything you do for the community, dear Ire!
Accessibility In SPAs
november 7, 2019 — Working on a Single Page Application, Nolan Lawson learned a lot about accessibility in SPAs over the past year. Now he shares some of his highlights in a blog post.Playing With State
november 7, 2019 — Play/pause buttons can turn into accessibility bottlenecks quite easily. Sarah Higley dedicated a blog post to them, helping us all make sense of ARIA states and accessible name changes.CSS Variables With Inline Styles
november 5, 2019 — When Ahmad Shadeed was working on a demo for an article, he needed an easy way to create a grid layout that allowed him to make changes without touching CSS every time. Now he summarized his approach.Location, Privilege And Performant Websites
november 5, 2019 — Not everyone has access to a fast internet connection. Stephanie Stimac wrote a thought-provoking article about privilege, website performance, and creating experiences that are easy to access and use.How To GraphQL
october 31, 2019 — Created by the community for the community, the free and open-source tutorial How to GraphQL teaches you all around GraphQL to take you from zero to production.Design Systems
Meet Design Systems, a recent Smashing book in which Alla Kholmatova explores how to set up an effective design system to create great digital products. With common traps, gotchas and lessons learned.
New Front-End Challenges To Master
- CSS Grid Layout
- Pattern Library
- Progressive Web Apps
- Switching to HTTPS
- HTTP/2 Guidelines
- React & Vue.js
- Redux For Designers
- Vue Components
Performance Optimization & Strategy
- Quick Performance Wins
- Building For Performance
- Front-End Optimization
- Back-End Optimization
- Better Compression
- Progressive Web Apps
- Perceived Performance
Design Patterns & Checklists
- Responsive Art-Direction
- Perfect Configurator
- Perfect Web Form
- Perfect Accordion
- Perfect Date Picker
- Perfect Slider
- Perfect Comparison Table
- Perfect Infinite Scroll
- Perfect Carousel
- Privacy UX
Improving Workflow & Data Protection
- GDPR For Developers
- Privacy Framework
- Estimating Time
- Dealing With Irrational Clients
- Getting Deliverables Right
- Meeting Deadlines
- Convincing Clients
- Invoicing Clients


"Hack The Space" is a 48 Hour Hackathon bought to you by 4 DSCs - UMIT, RJIT, QU and GGGI. The goal of the hackathon is to create functioning software or hardware by the end of the event. It tends to have a specific focus, which can include the programming language used, the operating system, an application, an API, or the subject and the demographic group of the programmers. Our mission is to build the community where the best talent could meet and collaborate towards future innovations
The DSC program is a grassroots channel through which Google provides development skills, mobile and web development skills for students, towards employability.For students to learn development skills, solve problems through technology and inspire them to be world className developers and changemakers.DSC activities are targeted at University students and any others including faculty members who want to learn development skills & work to solve real-life problems.
Hackathons are an innovative proving ground for new ideas.They stimulate the creative juices of participants and foster problem-solving and risk-taking in a casual environment.
Hackathons build a bridge to the developer community and are a great opportunity to showcase your talent.
Hackathons creates the perfect environment for networking. When you have the same interests with many other people, it’s the best way to learn even more from the most brilliant minds from all over the world and together accomplish outstanding achievements
Learn how to drive user engagement and retention with intelligent apps that are able to effectively serve users what they need without the fuss by providing these systems with the ability to automatically learn and improve from experience without being explicitly programmed.
For ALL Participants
Hack The Space will be conducted from 17th April 10am to 19th April 10am . It is a 48 hour hackathon .
Haven’t registered yet? No problem. Click on this link to register: HackTheSpace Devfolio
Keep a close look at #announcements on our Discord Server and Stay tuned on our social media handles !
One team can have upto 3 participants, individual participants are also allowed . If you need a team, drop your introduction on #🤝team-up on our Discord Server to let everyone know that you are open for team-up.
Yes, we have a few amazing mentors to help you in hacking. In case of any doubt, go to #🧠ask-the-mentors and ask from our amazing mentors by tagging @Mentors on our Discord Server
We will accept the submissions on Devfolio where you will need to submit your GitHub repository link and a demo video of max three minutes.
Top 10 teams will be selected to give a live presentation on the 28th before to our 4 esteemed judges.
Yes it does. If you haven't guessed it yet the theme is COSMOS
One does not need to build their project according to the theme but a hit of it might gain you some browniepie points.
No, we accept everyone including students and professionals
Tracks are essentially categories you will have to select for your project. There are 4 tracks : Health and Security , Education , Fintech/ Consumer/Agrotech and Open innovation
It's absolutely FREE !
hackthespace.dsc@gmail.com


|
Drake
|
Class that stores a function that is able to help determine the time and state at which a step of the initial value problem integration of a System should end, which may be done for any number of purposes, including publishing or state reinitialization (i.e., event handling).
System authors declare witness functions through LeafSystem::MakeWitnessFunction().
For the ensuing discussion, consider two times (t₀
and t₁ > t₀
) and states corresponding to those times (x(t₀)
and x(t₁)
). A witness function, w(t, x)
, "triggers" only when it crosses zero at a time t*
where t₀ < t* ≤ t₁
. Note the half-open interval. For an example of a witness function, consider the "signed distance" (i.e., Euclidean distance when bodies are disjoint and minimum translational distance when bodies intersect) between two rigid bodies; this witness function can be used to determine both the time of impact for rigid bodies and their states at that time of impact.
Precision in the definition of the witness function is necessary, because we want the witness function to trigger only once if, for example, w(t₀, x(t₀)) ≠ 0
, w(t₁, x(t₁)) = 0
, and w(t₂, x(t₂)) ≠ 0
, for some t₂ > t₁. In other words, if the witness function is evaluated over the intervals [t₀, t₁] and [t₁, t₂], meaning that the zero occurs precisely at an interval endpoint, the witness function should trigger once. Similarly, the witness function should trigger exactly once if w(t₀, x(t₀)) ≠ 0
, w(t*, x(t*)) = 0
, and w(t₁, x(t₁)) = 0
, for t* ∈ (t₀, t₁)
. We can define the trigger condition formally over interval [t₀, t₁]
using the function:
T(w, t₀, x(t₀), t₁) = 1 if w(t₀, x(t₀)) ≠ 0 and w(t₀, x(t₀))⋅w(t₁, x(t₁)) ≤ 0 0 if w(t₀, x(t₀)) = 0 or w(t₀, x(t₀))⋅w(t₁, x(t₁)) > 0
We wish for the witness function to trigger if the trigger function evaluates to one. The trigger function can be further modified, if desired, to incorporate the constraint that the witness function should trigger only when crossing from positive values to negative values, or vice versa.
A good witness function should not cross zero repeatedly over a small interval of time (relative to the maximum designated integration step size) or over small changes in state; when a witness function has been "bracketed" over an interval of time (i.e., it changes sign), that witness function will ideally cross zero only once in that interval.
A witness function trigger time is isolated only to a small interval of time (as described in Simulator). The disadvantage of this scheme is that it always requires the length of the interval to be reduced to the requisite length and that each function evaluation (which requires numerical integration) is extraordinarily expensive. If, for example, the (slow) bisection algorithm were used to isolate the time interval, the number of integrations necessary to cut the interval from a length of ℓ to a length of ε will be log₂(ℓ / ε). Bisection is just one of several possible algorithms for isolating the time interval, though it's a reliable choice and always converges linearly.
#include <drake/systems/framework/witness_function.h>
Public Types | |
| using | CalcCallback = std::function< T(const Context< T > &)> |
| Signature of a function suitable for calculating a value of a particular witness function. More... | |
Public Member Functions | |
| const std::string & | description () const |
| Gets the description of this witness function (used primarily for logging and debugging). More... | |
| WitnessFunctionDirection | direction_type () const |
| Gets the direction(s) under which this witness function triggers. More... | |
| T | CalcWitnessValue (const Context< T > &context) const |
| Evaluates the witness function at the given context. More... | |
| const System< T > & | get_system () const |
| Gets a reference to the System used by this witness function. More... | |
| boolean< T > | should_trigger (const T &w0, const T &wf) const |
| Checks whether the witness function should trigger using given values at w0 and wf. More... | |
| const Event< T > * | get_event () const |
| Gets the event that will be dispatched when the witness function triggers. More... | |
| Event< T > * | get_mutable_event () |
| Gets a mutable pointer to the event that will occur when the witness function triggers. More... | |
Does not allow copy, move, or assignment | |
| WitnessFunction (const WitnessFunction &)=delete | |
| WitnessFunction & | operator= (const WitnessFunction &)=delete |
| WitnessFunction (WitnessFunction &&)=delete | |
| WitnessFunction & | operator= (WitnessFunction &&)=delete |
| using CalcCallback = std::function<T(const Context<T>&)> |
Signature of a function suitable for calculating a value of a particular witness function.
|
delete |
|
delete |
| T CalcWitnessValue | ( | const Context< T > & | context | ) | const |
Evaluates the witness function at the given context.
| const std::string& description | ( | ) | const |
Gets the description of this witness function (used primarily for logging and debugging).
| WitnessFunctionDirection direction_type | ( | ) | const |
Gets the direction(s) under which this witness function triggers.
| const Event<T>* get_event | ( | ) | const |
Gets the event that will be dispatched when the witness function triggers.
A null pointer indicates that no event will be dispatched.
| Event<T>* get_mutable_event | ( | ) |
Gets a mutable pointer to the event that will occur when the witness function triggers.
|
delete |
|
delete |
| boolean<T> should_trigger | ( | const T & | w0, |
| const T & | wf | ||
| ) | const |
Checks whether the witness function should trigger using given values at w0 and wf.
Note that this function is not specific to a particular witness function.


Tutorial 8. Using CmBuffer¶
In the previous examples, we have been using CmSurface to store image data. In this tutorial, we show the usage of CmBuffer to store generic data, and use oword-block read and write to access such data. The following is what we do in the nbody example
Host Program: Set up CmBuffers before enqueue¶
// CmBuffer represents a 1D surface in video memory.
// This function creates a CmBuffer in memory with linear layout.
CmBuffer *surf1 = nullptr;
device->CreateBuffer(num_bodies * ELEMS_BODY * sizeof(float), surf1);
cm_result_check(surf1->WriteSurface((unsigned char *)h_pos, nullptr));
// Gets the input surface index.
SurfaceIndex *input_surface_idx1 = nullptr;
cm_result_check(surf1->GetIndex(input_surface_idx1));
CmBuffer *surf2 = nullptr;
device->CreateBuffer(num_bodies * ELEMS_BODY * sizeof(float), surf2);
cm_result_check(surf2->WriteSurface((unsigned char *)h_vel, nullptr));
// Gets the input surface index.
SurfaceIndex *input_surface_idx2 = nullptr;
cm_result_check(surf2->GetIndex(input_surface_idx2));
CmBuffer *surf3 = nullptr;
device->CreateBuffer(num_bodies * ELEMS_BODY * sizeof(float), surf3);
// Gets the output surface index.
SurfaceIndex *output_surface_idx1 = nullptr;
cm_result_check(surf3->GetIndex(output_surface_idx1));
CmBuffer *surf4 = nullptr;
device->CreateBuffer(num_bodies * ELEMS_BODY * sizeof(float), surf4);
// Gets the output surface index.
SurfaceIndex *output_surface_idx2 = nullptr;
cm_result_check(surf4->GetIndex(output_surface_idx2));
Host Program: read output buffer after enqueue¶
// Reads the output surface content to the system memory using the CPU.
// The size of data copied is the size of data in Surface.
// It is a blocking call. The function will not return until the copy
// operation is completed.
// The dependent event "sync_event" ensures that the reading of the surface
// will not happen until its state becomes CM_STATUS_FINISHED.
cm_result_check(surf3->ReadSurface((unsigned char *)new_pos, sync_event));
cm_result_check(surf4->ReadSurface((unsigned char *)new_vel, sync_event));
Kernel Program: buffer reads and writes¶
Here we only show the use of block reads and block writes from single address. C for Metal also provide various scattered reads and writes using a vector of addresses.
Read example¶
for (int i = 0; i < BODIES_CHUNK; i += BODIES_PER_RW) {
read(INPOS, (thisMB_ID * BODIES_CHUNK + i) * BODY_SIZE,
chunk.select<ELEMS_RW, 1>(ELEMS_BODY * i));
}
Write example¶
for (int i = 0; i < BODIES_CHUNK; i += BODIES_PER_RW) {
write(OUTPOS, (thisMB_ID * BODIES_CHUNK + i) * BODY_SIZE,
chunk.select<ELEMS_RW, 1>(ELEMS_BODY * i));
}


I am a student currently enrolled at Moringa School, taking Software Development classes.
2011-2014:Loreto Convent Girls' Matunda
2016-2019:Kabarak UNiversity
Here are two of the projects I've been able to create:
This is one of my projects that I created with HTML,CSS and JavaScript;
Visit my webpage>This is another of my projects that I created;
Visit my<EMAIL_ADDRESS>+254726015886


History of LAPACK releases Version 1.0 : February 29, 1992 Revised, Version 1.0a: June 30, 1992 Revised, Version 1.0b: October 31, 1992 Revised, Version 1.1: March 31, 1993 Version 2.0: September 30, 1994 Version 3.0: June 30, 1999 Update, Version 3.0: October 31, 1999 Update, Version 3.0: May 31, 2000
To better address the needs of our LAPACK users, we're in the process of creating this RELEASE_NOTES webpage. Users will be able to download updates/patches to LAPACK in a variety of ways (Unix patch, tar-gzip file), and will no longer need to wait for an update/release, or make the changes by-hand.
This file contains:
LAPACK has been tested on a variety of architectures. However, keep in mind that we do not have access to every possible type of machine, and the regrettable bug report will appear. We apologize for any inconvenience this may cause to our users, and strongly encourage users to contact us if you suspect an abnormality. Please contribute "machine-specific installation.hints.gz" for architectures that we do not have listed. These "hints" are of great benefit to many users.
LAPACK test suite failure when linking with ATLAS: The LAPACK test suite assumes that diagonal elements are not inverted, and then tests only the 'Left' case of xTRSM, since the 'Right' case of the reference implementation of xTRSM inverts the diagonal elements. In the implementation of xTRSM in ATLAS, inversion is used for both cases. Thus, the LAPACK test suite (./xlintsts < stest.in ) will fail when linking with ATLAS. The LAPACK test suite needs to be modified to allow for the inversion of diagonal elements, as ATLAS's implementation of xTRSM is valid.
Errata in LAPACK Users' Guide, Third Edition
Machine-specific Installation Hints
The following bug fixes have NOT yet been incorporated in a release/update of LAPACK.
UPDATES (Version 3.0) October 31, 1999 and May 31, 2000
The modifications listed below are included in the file: http://www.netlib.org/lapack/update.tgz as well as the http://www.netlib.org/lapack/lapack.tgz.Note: Unless otherwise stated, changes to single precision routines (names beginning with S or C) apply also to the corresponding double precision routines (names beginning with D and Z).
To view/download individual updated files from this list, please consult
the individual files on netlib.
http://www.netlib.org/lapack/single
http://www.netlib.org/lapack/double
http://www.netlib.org/lapack/complex
http://www.netlib.org/lapack/complex16
------------- ------- -------------------------- DIRECTORY ROUTINE DESCRIPTION OF CHANGE ------------- ------- -------------------------- LAPACK/ Makefile Added ./ for executables LAPACK/ BLAS/TESTING/ cblat3.f Missing CMPLX intrinsic in assignment statement Lines 1995-1996 ALPHA = ( ONE, -ONE ) BETA = ( TWO, -TWO ) should be ALPHA = CMPLX( ONE, -ONE ) BETA = CMPLX( TWO, -TWO ) SRC/ Makefile Move slarrb.o, slarre.o, and slarrf.o to SCLAUX Move dlarrb.o, dlarre.o, and dlarrf.o to DZLAUX cheevr.f Line 310 should instead be RWORK(1) = LRWMIN chetd2.f Error in zero'ing of imaginary parts of diagonal elements chbgvd.f Incorrect workspace calculation for LLWK2 and LLRWK when N=1. chpgvd.f Missing LQUERY return cstegr.f Replace SSTEGR->CSTEGR in call to XERBLA sbdsdc.f Workspace correction Line 113, 2*N --> 4*N Documentation correction IWORK dimension sbdsqr.f/ Workspace correction cbdsqr.f Line 99, 2*N --> 4*N sgeev.f Corrected error with LQUERY and WORK(1) sgelsd.f/ Leading comment correction for A and LWORK and cgelsd.f workspace correction sgelss.f/ Workspace correction Line 178, 5*N-4 --> 5*N Line 194, 5*M-4 --> 5*M cgelss.f Workspace correction Line 95, 5*MIN(M,N)-1 --> 5*MIN(M,N) Line 174, 5*N-1 --> 5*N Line 204, 5*M-1 --> 5*M Line 224, 5*M-1 --> 5*M sgesdd.f/ Possible MAXWRK uninitialized and cgesdd.f and LWORK=-1 query insertion sgesvd.f/ Workspace correction in comments Line 118, 5*MIN(M,N)-4 --> 5*MIN(M,N) Line 217, MAX(3*N,5*N-4) --> 5*N Line 390, MAX(3*M,5*M-4) --> 5*M cgesvd.f Workspace correction in comments Line 123, MAX(3*MIN(M,N),5*MIN(M,N)-4) --> 5*MIN(M,N) Line 224, MAX(3*N,5*N-4) --> 5*N Line 386, MAX(3*M,5*M-4) --> 5*M sgtsv.f Leading comment correction for B slaed2.f Error in routine name passed to XERBLA slaed4.f Corrected error in rootfinding slals0.f/ Out-of-range array reference clals0.f slalsd.f/ Leading comment correction for LWORK and a clalsd.f call to SLASRT was added slarzb.f/ Out-of-range array reference clarzb.f slasd2.f Fix out-of-range memory reference when N=0 slasd3.f Fix out-of-range memory reference when N=0 slasd4.f Cray compiler workaround on lines 596-597 and 607-608 slasda.f Leading comment correction for size of WORK slasdq.f Workspace correction Line 115, max(1,4*N-4) --> 4*N and incorrect routine name passed to XERBLA slasq1.f Workspace correction Line 53, 2*N --> 4*N and modifications for IEEE slasq2.f Fix out-of-range error for N=1 and modifications for IEEE slasq3.f Modifications for IEEE and index correction I0-->N0 on line 193 slasq4.f Modifications for IEEE slasq5.f Modifications for IEEE slasq6.f Modifications for IEEE sormrz.f Missing LQUERY return spteqr.f/ Workspace correction cpteqr.f Line 78, 2*N --> 4*N sstevr.f Documentation correction and call to SSTEGR ssyevr.f/ Documentation correction and call to SSTEGR cheevr.f TESTING/ Makefile Added ./ for executables sgd.in/ Fixed NSIZE line for xGX cgd.in Replace line 18 with 5 Largest matrix dimension (0 <= NSIZE <= 5) TESTING/MATGEN/ slatm6.f Modification for SGESVD workspace change TESTING/LIN/ schkgb.f/ Missing integer item in 9996 FORMAT statement cchkgb.f schkge.f/ Correction to FORMAT statements cchkge.f schkpb.f/ Removal of XTYPE='C' line cchkpb.f schkpo.f/ Removal of XTYPE='C' line cchkpo.f schkpp.f/ Removal of XTYPE='C' line cchkpp.f schksp.f/ Removal of XTYPE='C' line cchksp.f schksy.f/ Removal of XTYPE='C' line cchksy.f schktb.f/ Correction to FORMAT statements cchktb.f schktp.f/ Correction to FORMAT statements cchktp.f schktr.f/ Correction to FORMAT 9999 and 9998 statements cchktr.f sdrvls.f/ Correction to argument passed to INTRINSIC and cdrvls.f remove a call to SLASRT in TEST 15; Correction to leading comments (IWORK) TESTING/EIG/ schkhs.f Fixed out-of-range error for N=0 sdrgsx.f/ BDSPAC correction for xGESVD workspace and cdrgsx.f initialize IFUNC = 0 sdrvbd.f/ IWTMP correction for xGESVD workspace cdrvbd.f sdrvst.f/ Out-of-range array reference. cdrvst.f cerrbd.f Correction to summary line serred.f/ Correction to summary line cerred.f TIMING/ Makefile Erroneous sgeptim.in instead of SGEPTIM.in on line 253 TIMING/LIN/ stimls.f/ Correction to size of LWORK for xGELSD ctimls.f stimq3.f/ Correction Q3->QP before ATIMIN call ctimq3.f TIMING/LIN/LINSRC/ sgelsd.f/ Same correction as in SRC cgelsd.f sgelss.f/ Same correction as in SRC cgelss.f slals0.f/ Same correction as in SRC clals0.f slalsd.f/ Same correction as in SRC clalsd.f TIMING/EIG/ stim22.f/ Disable timing of SSTEGR if non-IEEE-754 compliant ctim22.f TIMING/EIG/EIGSRC/ sbdsdc.f Same correction as in SRC sbdsqr.f/ Same correction as in SRC cbdsqr.f sgesdd.f/ Same correction as in SRC cgesdd.f slaed2.f Same correction as in SRC slasd2.f Same correction as in SRC slasd3.f Same correction as in SRC slasd4.f Same correction as in SRC slasdq.f Same correction as in SRC slasq1.f Same correction as in SRC slasq2.f Same correction as in SRC slasq3.f Same correction as in SRC slasq4.f Same correction as in SRC slasq5.f Same correction as in SRC slasq6.f Same correction as in SRC spteqr.f/ Same correction as in SRC cpteqr.f


Jul 24th, 2014
Jul 14th, 2014
Jul 8th, 2014
Jun 27th, 2014
Jun 25th, 2014
Jun 15th, 2014
Jun 12th, 2014
Jun 9th, 2014
Jun 8th, 2014
May 27th, 2014
May 22nd, 2014
May 19th, 2014
Apr 17th, 2014
Apr 14th, 2014
Apr 10th, 2014


Preparation time
overnight
Cooking time
30 mins to 1 hour
Serves
Serves 10
Oh boy! Chocolate, cheesecake – what’s not to like? And everyone knows that Belgian chocolate is the best in the world. Just thinking about this makes us weak at the knees – not one for the faint hearted.
Lightly oil a 23cm loose-based spring-clip cake tin and line the base with baking parchment.
Put the chocolate for the filling in a heatproof bowl and place it over a pan of simmering water. Check that the bottom of the bowl isn’t touching the water. When the chocolate has melted, remove it from the heat and stir until smooth, then set aside to cool for a few minutes.
To make the crust, break up the biscuits roughly, then put them in a food processor and blitz them into crumbs.
Add the melted butter and blend until mixed.
Tip the mixture into the tin and press it firmly and evenly over the base.
Pop the tin into the freezer to harden.
Preheat the oven to 180°C/Fan 160°C/Gas 4.
Bring a kettle of water to the boil.
Put the cheese, soured cream, sugar and eggs in a food processor and blend until smooth. With the motor running, slowly add the melted chocolate and blend until thoroughly combined.
Remove the biscuit base from the freezer. Take 2 large sheets of foil and place them on the work surface, one across the other. Take the cake tin out of the freezer and place it in the centre of the foil and bring the foil up around it to create a bowl shape. Place the whole thing in a roasting tin. Pour the chocolate mixture on to the biscuit base. Then carefully pour hot water from the kettle into the roasting tin until it rises almost halfway up the sides of the cheesecake.
Bake the cheesecake in the centre of the oven for 35–45 minutes. It’s ready when the chocolate mixture is almost firm but retains a slight wobble.
Turn the oven off, but wedge a folded tea towel in the door and leave the cake to cool in the oven with the door ajar for at least 1 hour. Remove, cover with cling film and chill for at least 4 hours or overnight before serving.
To serve, loosen the sides of the tin with a knife and release the spring clip. Slide the dessert off the base of the tin on to a plate.
Decorate with the chocolate truffles and dust with grated white chocolate or icing sugar. For utter luxury, serve with some cream. Yum, yum!