Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
Learning Julia
Learning Julia

Learning Julia: Build high-performance applications for scientific computing

Arrow left icon
Profile Icon Lakhanpal Profile Icon Anshul Joshi
Arrow right icon
R$272.99
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3 (2 Ratings)
Paperback Nov 2017 316 pages 1st Edition
eBook
R$49.99 R$218.99
Paperback
R$272.99
Subscription
Free Trial
Renews at R$50p/m
Arrow left icon
Profile Icon Lakhanpal Profile Icon Anshul Joshi
Arrow right icon
R$272.99
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3 (2 Ratings)
Paperback Nov 2017 316 pages 1st Edition
eBook
R$49.99 R$218.99
Paperback
R$272.99
Subscription
Free Trial
Renews at R$50p/m
eBook
R$49.99 R$218.99
Paperback
R$272.99
Subscription
Free Trial
Renews at R$50p/m

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Shipping Address

Billing Address

Shipping Methods
Table of content icon View table of contents Preview book icon Preview Book

Learning Julia

Revisiting programming paradigms


Before solving a problem, we should always try to understand where it came from, then break the problem into the steps that we will perform to solve it. We should make sure that we consider all the scenarios and the agents that will be involved in solving the problem.

The programming paradigm refers to the breaking up of the programming activity into a structure of thoughts. It is an approach towards a problem and the orientation of sub-tasks. Although a problem can be approached using different paradigms, one paradigm may be more suited to solving it than another.

There are many programming paradigms, so we will only be discussing a few of them here:

  • Imperative
  • Logical
  • Functional
  • Object-oriented

Understanding the programming paradigm is recommended, as one programming language may be more suited to one particular paradigm. For example, C is suited to imperative programming, Haskell is suited to functional programming, and Smalltalk is for object-oriented programming...

Starting with Julia REPL


We have already learned how to start the Julia REPL and evaluate basic statements in it.

There are various options provided by Julia for running the program. We can directly run statements without even opening the REPL:

$ julia -e 'println("Hello World")'
Hello World

We can even run a loop without starting the REPL:

$ julia -e 'for i=1:5; println("Hello World"); end'
Hello World
Hello World

It is also possible to pass arguments:

$ julia -e 'for i in ARGS; println(i); end' k2so r2d2 c3po r4 bb8
k2so
r2d2
c3po
r4
bb8

ARGS is used to take command-line arguments to the script.

We can find the different options that Julia supports using the --help option:

$ julia --help

julia [switches] -- [programfile] [args...]
-v, --version             Display version information
-h, --help                Print this message
-H, --home <dir>          Set location of `julia` executable
-e, --eval <expr>         Evaluate <expr>
-E, --print <expr>        Evaluate and...

Variables in Julia


Just as in other programming languages, we use a variable to store a value that is obtained from a computation or external source.

Start the REPL by typing julia in the Terminal:

$ julia

# assign 100 to a variable x
julia> x = 100
100

# multiple the value in the variable by 5
julia> x*5
500

We can change the values stored in a variable or mutate the state:

# assign a different value to x
# this will replace the existing value in x
julia> x = 24
24

# create another variable y
julia> y = 10
10

Simple operations, such as swapping, are easy:

# swap values of x and y
julia> x,y = y,x
(10,24)

julia> x
10
julia> y
24

The names of variables can start with a character or a "_" (underscore). Julia also allows Unicode names (UTF-8), but not all Unicode names are accepted in the variable name:

julia> _ab = 40
40
julia> @ab = 10
ERROR: syntax: unexpected "="
julia> 1000
1000

Please note "!" (exclamation mark) shouldn't be used in the variable name as functions...

Integers, bits, bytes, and bools


Integers, bits, bytes, bools, and floating point numbers are used in arithmetic operations. Built-in representations of them are called as numeric primitives, and numeric literals are their representations as values in code.

Let’s understand Julia’s primitive numeric types. The following is a table of Integer types, which includes bits, bytes, and bool:

Type

Number of bits

Smallest value

Largest value

Int8

8

-2^7

2^7 - 1

UInt8

8

0

2^8 - 1

Int16

16

-2^15

2^15 - 1

UInt16

16

0

2^16 - 1

Int32

32

-2^31

2^31 - 1

UInt32

32

0

2^32 - 1

Int64

64

-2^63

2^63 - 1

UInt64

64

0

2^64 - 1

Int128

128

-2^127

2^127 - 1

UInt128

128

0

2^128 - 1

Bool

8

false (0)

true (1)

 

The UInt type refers to unsigned integers. These are those integers whose values start from 0.

This table shows the smallest and the largest values that a particular type of integer can hold.

We can also find the smallest and the largest value of a type of integer using the typemin() and typemax() function:

julia> typemax(Int32)
2147483647

julia> typemin(Int32...

Floating point numbers in Julia


It is easy to represent floating point numbers in Julia. They are represented in a similar fashion as they are in other languages:

# Add a decimal point
julia> 100.0
100.0

julia> 24.
24.0

# It is not required to precede a number from the decimal point
julia> .10
0.1

julia> typeof(ans)
Float64

There is a concept of positive zero and negative zero in Julia. They are equal but with different binary representations:

# equating two zeroes
julia> 0.0 == -0.0
true

julia> bits(0.0)
"0000000000000000000000000000000000000000000000000000000000000000"

# different first bit for negative zero
julia> bits(-0.0)
"1000000000000000000000000000000000000000000000000000000000000000"

Exponential notation can be very useful and convenient in various scenarios. It can be used in Julia using e:

julia> 2.99e8
2.99e8

julia> 2.99e8>999999
true

We have been using Float64 in the preceding examples. We can also use Float32 on 64-bit computers if required:

#...

Logical and arithmetic operations in Julia


Logical and arithmetic operations are very similar to in other programming languages. Julia has an exhaustive collection of all the operators required.

Let's start with the most common operators--arithmetic operators.

Performing arithmetic operations

Performing arithmetic operations, as discussed in the examples in previous sections, is straightforward. Julia provides a complete set of operators to work on.

Binary operators: +, -, *, /, ^, and %. These are just the most used and small subset of the binary operators that are available.

julia> a = 10;  b = 20; a + b
30

Unary operators: +, and -.

These are the unary plus and unary minus. The former performs the identity operation and the latter maps the values to their additive inverses.

julia> -4
-4

julia> -(-4)
4

There is a special operator ! that can be used with bool types. It is used to perform negation:

julia> !(4>2)
false

Performing bitwise operations

These are not frequently used, except...

Understanding arrays, matrices, and multidimensional arrays


An array is an indexable collection of objects such as integers, floats, and Booleans, which are stored in a multidimensional grid. Arrays in Julia can contain values of the Any type. Arrays are implemented internally in Julia itself.

In most of the other languages, the indexing of arrays starts with 0. In Julia, it starts with 1:

# creating an array
julia> simple_array = [100,200,300,400,500]
5-element Array{Int64,1}:
100
200
300
400
500

# accessing elements in array
julia> simple_array[2]
200

julia> simple_array[2:4]
3-element Array{Int64,1}:
200
300
400

In the preceding example, we can see that, unlike other programming languages, indexes start from 1.

# creating an array using randomly generated values
julia> rand_array = rand(1:1000,6)
6-element Array{Int64,1}:
378
 57
...

We previously discussed that the types of values in an array are homogeneous:

# types of values in array are homogeneous
julia> another_simple_array...

Understanding DataFrames


A DataFrame is a data structure that has labeled columns, which may individually have different data types. Like a SQL table or a spreadsheet, it has two dimensions. It can also be thought of as a list of dictionaries, but fundamentally, it is different.

DataFrames are the recommended data structure for statistical analysis. Julia provides a package called DataFrames.Jl, which has all the necessary functions to work with DataFrames.

Julia's package, DataFrames, provides three data types:

  • NA: A missing value in Julia is represented by a specific data type, NA.
  • DataArray: The array type defined in the standard Julia library, though it has many features, doesn't provide any specific functionalities for data analysis. The DataArray type provided in DataFrames.jl provides such features (for example if we needed to store some missing values in the array).
  • DataFrame: This is a two-dimensional data structure, such as spreadsheets. It is much like R or Pandas DataFrames and provides...

Summary


In this chapter, we revisited programming paradigms to understand the best approach to the problem. We then explored Julia using the REPL and found out that it is quite easy to get started with Julia. In subsequent sections, we went through the concepts and how primitive data types are used and operated in Julia. After studying integers and floating point operations, we went through important and widely used data structures, arrays, and matrices. Multidimensional arrays used in numerical computing were explained in the section that followed. After arrays, we explored DataArray and DataFrame packages, which are more suited to representing real-world data and are widely used in statistical computing. In the next chapter, we will study functions in Julia.

 

 

 

 

Summary

In this chapter, we revisited programming paradigms to understand the best approach to the problem. We then explored Julia using the REPL and found out that it is quite easy to get started with Julia. In subsequent sections, we went through the concepts and how primitive data types are used and operated in Julia. After studying integers and floating point operations, we went through important and widely used data structures, arrays, and matrices. Multidimensional arrays used in numerical computing were explained in the section that followed. After arrays, we explored DataArray and DataFrame packages, which are more suited to representing real-world data and are widely used in statistical computing. In the next chapter, we will study functions in Julia.

 

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Set up Julia's environment and start building simple programs
  • Explore the technical aspects of Julia and its potential when it comes to speed and data processing
  • Write efficient and high-quality code in Julia

Description

Julia is a highly appropriate language for scientific computing, but it comes with all the required capabilities of a general-purpose language. It allows us to achieve C/Fortran-like performance while maintaining the concise syntax of a scripting language such as Python. It is perfect for building high-performance and concurrent applications. From the basics of its syntax to learning built-in object types, this book covers it all. This book shows you how to write effective functions, reduce code redundancies, and improve code reuse. It will be helpful for new programmers who are starting out with Julia to explore its wide and ever-growing package ecosystem and also for experienced developers/statisticians/data scientists who want to add Julia to their skill-set. The book presents the fundamentals of programming in Julia and in-depth informative examples, using a step-by-step approach. You will be taken through concepts and examples such as doing simple mathematical operations, creating loops, metaprogramming, functions, collections, multiple dispatch, and so on. By the end of the book, you will be able to apply your skills in Julia to create and explore applications of any domain.

Who is this book for?

This book allows existing programmers, statisticians and data scientists to learn the Julia and take its advantage while building applications with complex numerical and scientific computations. Basic knowledge of mathematics is needed to understand the various methods that will be used or created in the book to exploit the capabilities for which Julia is made.

What you will learn

  • Understand Julia s ecosystem and create simple programs
  • Master the type system and create your own types in Julia
  • Understand Julia s type system, annotations, and conversions
  • Define functions and understand meta-programming and multiple dispatch
  • Create graphics and data visualizations using Julia
  • Build programs capable of networking and parallel computation
  • Develop real-world applications and use connections for RDBMS and NoSQL
  • Learn to interact with other programming languages–C and Python—using Julia
Estimated delivery fee Deliver to Brazil

Standard delivery 10 - 13 business days

R$63.95

Premium delivery 3 - 6 business days

R$203.95
(Includes tracking information)

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Nov 24, 2017
Length: 316 pages
Edition : 1st
Language : English
ISBN-13 : 9781785883279
Category :
Languages :

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Shipping Address

Billing Address

Shipping Methods
Estimated delivery fee Deliver to Brazil

Standard delivery 10 - 13 business days

R$63.95

Premium delivery 3 - 6 business days

R$203.95
(Includes tracking information)

Product Details

Publication date : Nov 24, 2017
Length: 316 pages
Edition : 1st
Language : English
ISBN-13 : 9781785883279
Category :
Languages :

Packt Subscriptions

See our plans and pricing
Modal Close icon
R$50 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
R$500 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just R$5 each
Feature tick icon Exclusive print discounts
R$800 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just R$5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total R$ 1,137.97
Learning Julia
R$272.99
Julia for Data Science
R$306.99
Julia: High Performance Programming
R$557.99
Total R$ 1,137.97 Stars icon
Banner background image

Table of Contents

10 Chapters
Understanding Julia&#x27;s Ecosystem Chevron down icon Chevron up icon
Programming Concepts with Julia Chevron down icon Chevron up icon
Functions in Julia Chevron down icon Chevron up icon
Understanding Types and Dispatch Chevron down icon Chevron up icon
Working with Control Flow Chevron down icon Chevron up icon
Interoperability and Metaprogramming Chevron down icon Chevron up icon
Numerical and Scientific Computation with Julia Chevron down icon Chevron up icon
Data Visualization and Graphics Chevron down icon Chevron up icon
Connecting with Databases Chevron down icon Chevron up icon
Julia’s Internals Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
(2 Ratings)
5 star 50%
4 star 0%
3 star 0%
2 star 0%
1 star 50%
Abhay Aggarwal Dec 12, 2017
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Here's a dirty little secret... Programmers love Julia! Only now, the rest of the world is discovering it....I heard about Julia recently from my programming friends, and was intrigued by the claimed possibilities. I thought of it more as marketing hyperbole, since the language is relatively new, and only now gaining traction. I picked this book over the weekend, and went through it, dipping my toes into the Julia world.The book is nicely laid out, introducing you to the origins of Julia, and straightaway taking you into starting with & using Julia. It then walks you through the syntax, operations, structures, operations, and more. Since Julia is primarily used in the field of data science, it has enough content & knowledge to keep the experts happy on harnessing Julia to aid them in their analysis.Overall, I liked the following:1) Structure & detailed layout of the book2) Good intro to engage new users of Julia3) Open source callouts at every turn4) Deep dive content for people who have already been using Julia before5) Conciseness & nice examples to get your hands dirty on actual codeBottomline: This book has enough content to induce new programmers to try out Julia, while keeping current Julia users engaged with stuff they might not know! I recommend it heartily.
Amazon Verified review Amazon
Randy Ford Feb 17, 2018
Full star icon Empty star icon Empty star icon Empty star icon Empty star icon 1
What poorly written book! Bad grammar, filled with jargon, and even though it has been out for 4 months, the example code isn't up yet. I am pretty sure that the 3 five star reviews were written by friends.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela